Releases: c3d/db48x
Release 0.9.13 "Saints" - Truth plot, colors, and bug fixes
This release focuses on graphics and a few user-reported bug fixes
New features
binscomputes frequency bins from statistics dataRessets the resolution when plottingHistogramPlotdraws a histogram (frequency) plot from an arrayHSVgenerates a color pattern from hue, saturation and valueColorgenerates a color pattern from an object, including namesTruthPlotrenders a truth value plot, with grayscale and color options- Add a new
XYPlotsdemo illustratingTruthPlotvariants
Bug fixes
- Update the screen in
ShowwhenPictis set - Fix crash in
Date+when adding invalid dates - Correctly update the
UserModeMenuand annunciator when changing User mode - The
STOoperation 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
Inputvalidation 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
crc32utility, now use a local implementation - Remove dependency on
tac, replace it withtail -r - Rendered graphics are now preserved in case of auto-power-off
- Avoid transient build errors on missing help directory
- Add documentation for
ResetModesand usage example forModes - Negative dates now show as
BCinstead of with a minus sign
Release 0.9.12 "Alive" - Return to active duty
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
lgammafunction on DM32 / DM42n platforms - Fixed undefined symbol issue in WASM builds
- Fixed platform-specific compilation errors on Android
- Fixed incorrect simplification for
sqrtfunction - Fixed display of checksum in the
Infobox - 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
→Numspelling 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
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
→Rangeand 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
erfanderfc
Bug fixes
- Do not leave bad expressions behind after errors on ranges
- Obey the
InfinityErrorflag 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±σ15instead of110±15σ - Accept
−as valid input in constants (for−∞) - Record performance data for iPhone 16
- Change spelling to
→σRangeinRangeMenu - Use
ASSERTfor divide by zero inner checks (remove dead code)
Release 0.9.10 "Best" - Ranges and documentation
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
Copyto target a local variable or setting - Support
TrueandFalsein→Num
Bug fixes
- Replace
logwithln, makelogbe base-10 logarithm - Check zero-divide in ranges
- Fix the implementation of trig functions for ranges
- Fix incorrect command associated to the
%Talias (should be%Total) - Adjust help for
log10andln - Avoid pushing a null pointer on the stack on error evaluating constants
- Add missing
Ⓒsign in uncertainty forEpl - Fix constant evaluation referencing
thisafter it may have moved - Report missing current directory in
Purge - Report errors when purging invalid objects in
PurgeandPurgeAll - Avoid
ClearThingsMenuin tests, the key maps to forward delete in editor
Improvements
- keyboard: Update layout to include
σcharacter - Remove the
state/Test.48Sfile, it's not longer relevant - Add
constantcase toobject::is_negative - Add
DATE-as an alias forDDAYS - Add
PgAllas an alias forPurgeAll - 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
PPARtoplot.md - Avoid date conversions during constant evaluation
- Accelerate and improve the display of constant values in menus
- Add
launch.jsonandtasks.jsonbuild configuration generated by Cursor - Send a
START_TESTcommand 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
Blankvariants - Documentation and examples for
GrayandRGB - Documentation and examples for
PMIN,PMAX,XRNG,YRNG - Documentation and examples for
Eqand equations - Add examples for list sum, product and difference commands
Release 0.9.9 "Headrest" - Ranges
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 use2 FIXmode for all values. In that mode,50will display as50.00, and3/4will display as0.75. TheShowcommand 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
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
ConstantsMenuinMainMenu
Improvements
The INSTALL.md file now describes the installation procedure.
Release 0.9.7 "Home" - Symbolic integration and bug fixes
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
hmsanddmsunits - datetime:
_hmsremoves_dmsif 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
FromHMShelp 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.mdto6-ImplementationStatus.mdand remove emptydoc/calc-help/finances.mdfile. - 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
This release is mostly bug fixes
Bug fixes
- Evaluate index in
getandputlike 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
GraphicResultDisplayfor 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,→Gradand→πrarray-wise - Add
VectorMenuon first page ofMatrixMenu - 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
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
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,PICTis an actual variable in the current directory, meaning that you can have multiplePICT, although bitmaps use a lot of memory. For example, running500 300 BLANK 'PICT' STOwill create a 500x300 pixels off-line image inPICT, 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 theShowcommand (i.e. centererd if smaller than the screen, and with scrolling if larger). They are also persistent, meaning that you need to explicitlyClLCDto erase them. - Add
Blank,BlankGrob,BlankBitmapandBlankPixmapcommands 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,→Pixmapcommands 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
→LCDandLCD→commands to send an object to the current graphics, or to create a graphic object from the current screen content. - The
Offcommand can now be used in a program and will preserve what is on screen. You can resume execution of the program by using theONkey. AddPowerOffWithImagecommand to show off-images even from programs.
Bug fixes
- Fix display of object
Infoin 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
MemoryMenuto make both GC and runtime statistics available - Reorganize the
GraphicsMenuby topics to accomodate the new commands - Add image checks in the test infrastructure for RPL code examples
- Add tests for RGB colors
- Repair
make comparewhich was trying to build a binary fromcompare.cc - Make
Suba compatibility spelling forExtract, not the default one - Adjust low battery indications to avoid premature warnings
- Make
debug_printfuse lower-level routines that can run earlier after boot - Add
make INSTALL_PGM_ONLY=y installoption 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,SymbolicResultsandNumericalResults