Skip to content

Releases: c3d/db48x

Release 0.9.13 "Saints" - Truth plot, colors, and bug fixes

02 Nov 22:00
@c3d c3d

Choose a tag to compare

This release focuses on graphics and a few user-reported bug fixes

New features

  • bins computes frequency bins from statistics data
  • Res sets the resolution when plotting
  • HistogramPlot draws a histogram (frequency) plot from an array
  • HSV generates a color pattern from hue, saturation and value
  • Color generates a color pattern from an object, including names
  • TruthPlot renders a truth value plot, with grayscale and color options
  • Add a new XYPlots demo illustrating TruthPlot variants

Bug fixes

  • Update the screen in Show when Pict is set
  • Fix crash in Date+ when adding invalid dates
  • Correctly update the UserModeMenu and annunciator when changing User mode
  • The STO operation now works sensibly on flags
  • Fixed a rare on-startup crash running tests in the debugger
  • Invalidate the font cache when changing settings (notably FixedWidthDigits)
  • Fix transient Input validation errors after text-editor errors
  • Remove two extra parentheses in the documentation for settings

Improvements

  • Transient Alpha now preserves existing Alpha / Lowercase mode
  • Remove dependency on external crc32 utility, now use a local implementation
  • Remove dependency on tac, replace it with tail -r
  • Rendered graphics are now preserved in case of auto-power-off
  • Avoid transient build errors on missing help directory
  • Add documentation for ResetModes and usage example for Modes
  • Negative dates now show as BC instead of with a minus sign

Release 0.9.12 "Alive" - Return to active duty

21 Oct 23:59
@c3d c3d

Choose a tag to compare

This release focuses on simulator improvements, bug fixes, and enhanced mathematical functionality, marking a return to active development and maintenance after the hiatus caused by Christophe de Dinechin's move.

New features

  • Enhanced trigonometric functions with exact angle reduction when possible
  • Improved simulator graphics by smoothing the output when rescaling

Bug fixes

  • Compute Julian day number conversion with negative Gregorian years
  • Fixed crash in lgamma function on DM32 / DM42n platforms
  • Fixed undefined symbol issue in WASM builds
  • Fixed platform-specific compilation errors on Android
  • Fixed incorrect simplification for sqrt function
  • Fixed display of checksum in the Info box
  • Fixed hang when reading CSV files containing unit objects
  • Do not reorder mean and standard deviation parts in uncertain numbers
  • Avoid possible null-dereference in several statistical functions

Improvements

  • The simulator now preserves a fixed aspect ratio while resizing
  • The simulator now builds cleanly on Qt5
  • Added 2 new tests for Julian day number conversion
  • Updated copyright year in About message
  • Improved description of "Julian day number" commands in documentation
  • Improved build system to select qmake6 on Arch Linux
  • Show →Num spelling in compatibility mode
  • Updated AUTHORS list
  • Remove documentation for newRPL commands UDEFINE and UPURGE
  • Improve implementation status section of the documentation

Release 0.9.11 "Prayer" - Uncertain numbers

29 Jul 20:28
@c3d c3d

Choose a tag to compare

This release implements arithmetic and basic functions on uncertain numbers.
This propagates uncertainty using quadradic superposition, in a way similar to OpenRPNCalc, with a generalization for correlated variables.

New features

  • Arithmetic and basic functions on uncertain numbers
  • Add support for complex-valued unit objects, e.g. 5+3ⅈ Ω
  • Add support for range-valued unit objects, e.g. 1…3 Ω
  • Support arithmetic operation on infinities, e.g. ∞ 42 +
  • Add commands to generate mathematical constants (π, ℮, ∞ and −∞)
  • Parsing and editing of ranges containing infinities
  • Accept infinities in →Range and variants
  • Comparison of infinite values and finite values
  • Add union and intersection commands for ranges
  • Add operations to build ranges and uncertain numbers from components
  • Add derivative for erf and erfc

Bug fixes

  • Do not leave bad expressions behind after errors on ranges
  • Obey the InfinityError flag when detecting divide-by-zero in ranges
  • Avoid crash pushing null pointer after unit evaluation error
  • Avoid spurious inconsistent units error due to date computations
  • Null-protection in variadic list::make, fixes null-deref crash

Improvements

  • Accelerate error exit from arithmetic operations
  • Render uncertain numbers as 110±σ15 instead of 110±15σ
  • Accept as valid input in constants (for −∞)
  • Record performance data for iPhone 16
  • Change spelling to →σRange in RangeMenu
  • Use ASSERT for divide by zero inner checks (remove dead code)

Release 0.9.10 "Best" - Ranges and documentation

21 Jul 01:49
@c3d c3d

Choose a tag to compare

This release is primarily a refinement of ranges and a documentation update.

New features

  • Always display infinity ranges with range notation
  • Add constant for -∞
  • Add support for ranges in Explode / Obj→
  • Add support for delta and percent ranges in ToDecimal
  • Allow Copy to target a local variable or setting
  • Support True and False in →Num

Bug fixes

  • Replace log with ln, make log be base-10 logarithm
  • Check zero-divide in ranges
  • Fix the implementation of trig functions for ranges
  • Fix incorrect command associated to the %T alias (should be %Total)
  • Adjust help for log10 and ln
  • Avoid pushing a null pointer on the stack on error evaluating constants
  • Add missing sign in uncertainty for Epl
  • Fix constant evaluation referencing this after it may have moved
  • Report missing current directory in Purge
  • Report errors when purging invalid objects in Purge and PurgeAll
  • Avoid ClearThingsMenu in tests, the key maps to forward delete in editor

Improvements

  • keyboard: Update layout to include σ character
  • Remove the state/Test.48S file, it's not longer relevant
  • Add constant case to object::is_negative
  • Add DATE- as an alias for DDAYS
  • Add PgAll as an alias for PurgeAll
  • More systematic purging of environment and variables between tests
  • Add check in test suite that we actually purged special variables
  • Refresh authors list
  • Move documentation for PPAR to plot.md
  • Avoid date conversions during constant evaluation
  • Accelerate and improve the display of constant values in menus
  • Add launch.json and tasks.json build configuration generated by Cursor
  • Send a START_TEST command at start of test, refresh simulated battery
  • Cursor-assisted review of missing command documentation
  • Cursor-assisted generation of content in the Quickstart guide
  • Cursor-assisted improvements to grammar and spelling
  • Documentation and examples for Blank variants
  • Documentation and examples for Gray and RGB
  • Documentation and examples for PMIN, PMAX, XRNG, YRNG
  • Documentation and examples for Eq and equations
  • Add examples for list sum, product and difference commands

Release 0.9.9 "Headrest" - Ranges

30 Jun 20:24
@c3d c3d

Choose a tag to compare

Pre-release

This release introduces four range types to perform computations on ranges, and fixes serious graphical regressions that remained undetected by the test suite.

New features

  • Three range types, known as interval (1…3), delta range (2±1) and percent range (2±50%), for which arithmetic and most operations have been implemented.
  • An uncertain type (2±3σ), for which arithmetic and operations are not implemented yet.
  • A new flag, ShowAsDecimal, presents integers and fractions using a decimal format. This is useful for people working in banking, who can use 2 FIX mode for all values. In that mode, 50 will display as 50.00, and 3/4 will display as 0.75. The Show command still shows the original value.
  • The simulator now strips CR/LF when pasting on Windows.
  • The ^ operator now operates on arrays

Bug fixes

  • The image comparison code has been broken since January. As a result, various regression regarding graphical output remained undetected.
  • One particular case is the generation of incorrect BMP files after the default format for graphic objects was switched to bitmap.
  • A possible crash was eliminated when converting a number to integer, to fraction or to decimal.

Improvements

  • The σ (used for uncertain numbers) replaces ρ (unused at the moment) on the keyboard in alpha mode.

Release 0.9.8 "Crowdfeeding" - Bug fixes

22 Jun 22:27
@c3d c3d

Choose a tag to compare

This is a minor release with bug fixes.

Bug fixes

  • isolate: Fix patterns for exponentials and logs
  • doc: Fix list of currently supported models
  • derivation: Allow simplification when matching against constant
  • solver: Do not emit type error when guesses are constants
  • expressions: Correctly substitute names in list substitutions
  • menu: Fix label for ConstantsMenu in MainMenu

Improvements

The INSTALL.md file now describes the installation procedure.

Release 0.9.7 "Home" - Symbolic integration and bug fixes

26 May 05:25
@c3d c3d

Choose a tag to compare

This release focuses on symbolic integration and bug fixes.

New features

  • Symbolic evaluation of integrals when the primitive is known, for example '∫(A;B;X↑3-sin(X-3);X)' now evaluates symbolically.
  • hms: Cycle between hms and dms units
  • datetime: _hms removes _dms if necessary
  • Non-algebraic form of where, with list as substitution input, for example « 'X-Y·Z' { X 3 Y '2·A' } | » returns '3-2·A·Z'.

Bug fixes

  • Correctly render * and < in the built-in help render engine.
  • Optimized temporaries cleanup now correctly clears the command if temporary.
  • Fix rounding errors for decimal values in HMS and DMS
  • Do not give truncated result for FromHMS
  • Fix conversion of hardware floating-point values to fraction
  • Fix typo in FromHMS help entry
  • Allow screenshots with Shift-Disp in Show
  • Fix two tests that fail and should not
  • Correct hwfp entry with french locale.
  • stack: Correct font size for non-result stack levels
  • Swap logfit and powerfit menu entries (wrong label)

Improvements

  • Improve detection of unknown primitives and derivatives.
  • The rewrite engine was incorrectly rewriting "up" for integration and differentiation, when rewriting "down" is much more efficient. This accelerates symbolic integration and differentiation by more than an order of magnitude in some cases.
  • Evaluate the bounds of integrals numerically ahead of time. This accelerates numerical integration when the bounds are complex expressions.
  • In the rewrite engine, evaluate the sub-expressions that correspond to a constant in the pattern before comparing. This notably solves some cases where the derivative would contain leftover constants expressions that should have been eliminated, such as 0*X.
  • Automatically generate the list of implemented commands, and update the implementation status.
  • Renamed the settings for numerical / symbolic integration and solver
  • Rename 6-Unimplemented.md to 6-ImplementationStatus.md and remove empty doc/calc-help/finances.md file.
  • Support for recent compilers (GCC >= 12.2.1).
  • Update performance data for 0.9.6
  • Add Philippe Martens to the authors list

Release 0.9.6 "Peace" - Bug fixes

27 Apr 23:00
@c3d c3d

Choose a tag to compare

Pre-release

This release is mostly bug fixes

Bug fixes

  • Evaluate index in get and put like the HP50G
  • Avoid premature simplification during arithmetic operations
  • Do not wrap variables after Copy, e.g. in 'A+A▶A+A'
  • Return errors for unknown primitives / derivatives in algebraics
  • Correctly use GraphicResultDisplay for result stack level
  • Ensure pi and e display the same size at 60 digits precision
  • Fix bogus exponent truncation in polynomials
  • Fix issue in + and - on vectors with angles, e.g. [ 3 2 1.7_° ]
  • Fix possible garbage collection memory corruption in FromVector

Improvements

  • units: Make BaseUnits, →Deg, →Rad, →Grad and →πr array-wise
  • Add VectorMenu on first page of MatrixMenu
  • Do not single-step or debug during plot/integration
  • Add routine to render u64 and i64

Release 0.9.5.1 "Wait" - Emergency fix for Wait and Refresh

22 Apr 08:11
@c3d c3d

Choose a tag to compare

Bug-fix only release for timing of Wait command

Bug fix

The changes that improve battery life in 0.9.5 had an impact on commands that need absolute time, because the internal timer of the DM32/DM42 switches of when in deep sleep. As a result, Wait with durations longer than 1 second would wait much longer than expected, and long-duration Refresh settings e.g. BatteryRefresh would also wait longer than expected. Replace the use of the internal timer with a synthetic timer based on the real-time clock.

Release 0.9.5 "Everlasting" - Power management, offline graphics

21 Apr 16:02
@c3d c3d

Choose a tag to compare

This release brings two major new features: vastly reduced power drain, and off-line persistent graphics.

New features

  • Off-line graphics are the ability to draw images in memory instead of directly on screen. Like on HP calculators, this works by storing a graphic object in PICT. Unlike HP calculators, PICT is an actual variable in the current directory, meaning that you can have multiple PICT, although bitmaps use a lot of memory. For example, running 500 300 BLANK 'PICT' STO will create a 500x300 pixels off-line image in PICT, and all graphic commands after that will draw in that off-line image instead of on screen. Off-line graphics are not immediately shown on screen, but are displayed before returning to the command line in a way similar to the Show command (i.e. centererd if smaller than the screen, and with scrolling if larger). They are also persistent, meaning that you need to explicitly ClLCD to erase them.
  • Add Blank, BlankGrob, BlankBitmap and BlankPixmap commands to create a blank image with default format, in HP GROB format, in DB48x bitmap (Black and white) format and in DB50x pixmap format (color RPL only).
  • Add →HPGrob, →Bitmap, →Pixmap commands which can be used to generate an HP-compatible GROB format, a bitmap or a pixmap (color RPL only) from an object. If the object is already a graphic, perform conversion. Note that on color RPL, conversions between color and monochrome formats are supported. Colors are converted to monochrome using grayscale patterns.
  • Add →LCD and LCD→ commands to send an object to the current graphics, or to create a graphic object from the current screen content.
  • The Off command can now be used in a program and will preserve what is on screen. You can resume execution of the program by using the ON key. Add PowerOffWithImage command to show off-images even from programs.

Bug fixes

  • Fix display of object Info in the interactive stack
  • Clear system timers before entering system menu, so that the self test menu entry does not run a fast-paced loop.
  • Fix off-by-one error in result of LastBitSet (number bits starting at 0)
  • Correctly render color pixmaps when on the stack (color RPL only)

Improvements

  • Reduce power usage dramatically by disabling timers when going to sleep. This manifests as a higher battery voltage being shown, which is closer to what the DM42 firmware or integrated self-test would show. This will most likely improve battery life for interactive uses of DB48x.
  • Reorganize the MemoryMenu to make both GC and runtime statistics available
  • Reorganize the GraphicsMenu by topics to accomodate the new commands
  • Add image checks in the test infrastructure for RPL code examples
  • Add tests for RGB colors
  • Repair make compare which was trying to build a binary from compare.cc
  • Make Sub a compatibility spelling for Extract, not the default one
  • Adjust low battery indications to avoid premature warnings
  • Make debug_printf use lower-level routines that can run earlier after boot
  • Add make INSTALL_PGM_ONLY=y install option for faster install
  • Generate DB48x bitmaps by default instead of HP-compatible GROBs. Bitmaps use less memory when the width is not a multiple of 8.
  • Make test of pixel functions more reliable by increasing their timeout
  • Add help for ModesMenu, SymbolicResults and NumericalResults