This release improves precision mode persistence, equation solving, polynomial workflows, automation, memory behavior, autocomplete, and documentation.
Advanced Trigonometry Calculator 2.1.7 release notes
Release date: 2026-06-09 Last updated: 2026-06-30
Highlights
- Added persistent switching between
doubleand Boostmp_float. - Fixed 50-decimal-place output for high precision constants such as
piand - Fixed
solve equation(x^7-12)and other simple textual polynomial equations. - Fixed
simplify polynomial(...)for simple textual polynomials and simple - Added an automatic regression suite based on the full user guide.
- Improved command-line automation for commands that export reports to
.txt. - Reduced RAM use and fixed several dynamic-allocation issues in sorting, DSP,
- Added a memory stress runner for repeated polynomial simplifier,
- Fixed direct
min(...),max(...)andavg(...)list calculations and - Relaxed user variable-name restrictions while preserving exact reserved
- Added regression coverage for automatic multiplication deduction.
- Improved Windows 11 console behavior: the ATC intro is disabled by default on
- Improved
verbose resolution: directverbose resolution(1)and - Added exact rational-cancellation fast-path coverage for solver/equation
- Added interactive prompt improvements: Tab completion, repeated-Tab cycling
- Improved script execution for common
print("...", ...)statements by - Reduced script memory pressure by freeing repeated TXT-processing arrays and
- Rewrote and published the repository README to the GitHub
mainbranch in
e.
products of polynomial factors.
statistics, update checking, startup and date/time parsing code paths.
roots-to-polynomial and equation solver commands.
validated the same functions with matrix variable names.
function, constant and numeric-prefix names.
Windows 11, console colors are mapped correctly when Windows Terminal uses ANSI/VT sequences, and ATC can open new instances as Windows Terminal tabs when wt.exe is available.
verbose resolution(0) commands are supported, and verbose output is no longer enabled during startup internals.
paths using real roots, pi, e and complex pii constants.
for ambiguous matches, broader command/function suggestions, dynamic user function suggestions and Up/Down history navigation.
bypassing the temporary TXT-processing path when the line can be evaluated safely in memory.
allocating matrix scratch buffers only when matrix processing is actually needed.
commit f71e507 Improve project README.
Documentation policy
Project documentation should be maintained in Portuguese and English from this point forward. Code comments, when present, should be written in English only.
Documentation improvements
ATC 2.1.7 documentation was expanded to make the project easier to learn, test and contribute to:
- added a one-page Quick Start near the beginning of the user guides;
- added an ATC Cookbook with practical workflows and safe example commands;
- added Best Practices for reliable use and reproducible bug reports;
- expanded the Architecture Overview with module and execution-flow diagrams;
- added a Developer Reference with contribution checklists;
- reorganized the full user guide around a more natural learning path;
- linked user documentation, coverage notes and regression status more clearly;
- generated bilingual Markdown/PDF documentation and DOCX full user guides.
Precision mode persistence
ATC now reads and writes:
%USERPROFILE%\Pictures\Advanced Trigonometry Calculator\higherPrecision.txt
Values:
0:double1: Boostmp_float
Users can switch modes with:
higherprecision(1)
higherprecision(0)
The selected mode is applied after restarting ATC.
High precision fixes
The command:
dp50dppi
now returns:
3.14159265358979323846264338327950288419716939937511
The command:
dp50dpe
now returns:
2.71828182845904523536028747135266249775724709369996
Technical changes:
- fixed decimal output no longer uses
printf("%f")with Boost multiprecision piandeuse Boost constants inmp_floatmode- decimal-place parsing avoids contaminating result state for simple integer
values
precision values
Equation solver fixes
ATC now normalizes simple textual polynomial equations before passing them to the coefficient-based solver.
Validated commands:
solve equation(x+2)
solve equation(x^2-5*x+6)
solve equation(x^7-12)
Expected examples:
solve equation(x+2)
x1=-2
solve equation(x^2-5*x+6)
x1=3
x2=2
Additional validated rational and symbolic-constant cases include:
solve equation(((x-5)(x+2))/(x-5))
solve equation((((x-5)(x+2))/(x-5))*(((x-5)(x+pi))/(x-5))*(((x-5)(x+e))/(x-5)))
solve equation(((x-e+pii)(x-e-pii))/(x-e-pii))
solver(((x-5)(x+2))/(x-5))
solver((x-e+pii)(x-e-pii))
For:
solve equation(x^7-12)
ATC now returns seven roots:
x1=1.42616
x2=0.889197+1.11502i
x3=0.889197-1.11502i
x4=-0.317351+1.3904i
x5=-0.317351-1.3904i
x6=-1.28493-0.618788i
x7=-1.28493+0.618788i
Export automation
Commands that ask whether to export a report can now be driven by redirected stdin in automated runs.
This supports test flows such as:
1
C:\path\to\report.txt
Interactive use remains unchanged.
Polynomial simplification fixes
simplify polynomial(...) now keeps x symbolic for simple textual polynomial inputs instead of evaluating it as zero before simplification.
Validated commands now include:
simplify polynomial(x)
simplify polynomial(x+1)
simplify polynomial(x+x+1)
simplify polynomial(x^2-5*x+6)
simplify polynomial((x-2)*(x-3))
simplify polynomial((x+1)*(x+1))
simplify polynomial((2*x+1)*(x-3))
Example:
simplify polynomial((x-2)*(x-3))
(1+0i)x^2+(_5+0i)x^1+(6+0i)
Exact cancellable rational products are also covered, including:
simplify polynomial(((x-5)(x+2))/(x-5))
simplify polynomial((((x-5)(x+2))/(x-5))*(((x-5)(x+2))/(x-5)))
Verbose resolution
verbose resolution remains available as an interactive menu. ATC 2.1.7 also supports:
verbose resolution(1)
verbose resolution(0)
The setting is persisted in verboseResolution.txt, but it is no longer applied globally during startup. This prevents verbose traces from internal startup work while preserving useful calculation traces for user expressions.
Verbose output was also made easier to read: display-only trailing +0 terms are hidden, evaluated function arguments are labelled directly, function results are printed without the old interactor wording, and internal menu prompts keep their evaluation quiet even when verbose resolution is enabled.
Interactive prompt and autocomplete
The main ATC prompt now supports line editing and autocomplete while the user is writing an expression. Pressing Tab completes the closest documented command, mathematical function, alias or user function. When several matches are possible, repeated Tab presses cycle through them.
Autocomplete suggestions are ordered by shortest closest match first and then case-insensitively. The same expression can receive multiple completions, which is useful for longer mathematical input.
The prompt also supports Up and Down history navigation and normal cursor editing keys. The completion list is cached per input line to avoid rebuilding the vocabulary repeatedly while the user cycles suggestions.
Memory and allocation fixes
Several 2.1.7 code paths no longer reserve large global buffers when the input size is known:
- numeric sorting now allocates result buffers based on the number of submitted
fft(...)andifft(...)allocate numeric buffers based on the number of- the even-size
fft(...)loop no longer reads past the logical end of the - statistics menu operations free temporary arrays and allocate list buffers
- dynamic string helpers now consistently preserve null termination and handle
- deletion helpers now release arrays directly instead of clearing every element
- normal and long character-array deletion helpers now use the correct buffer
- update checking now owns the HTTP response with
std::stringand closes - startup reuses the global
forsprintfbuffer instead of leaking the first - date/time command paths now use small stack buffers for two/four-character
- alphabetical sorting normalization now avoids repeated
DIMallocations for - the dynamic-allocation tracker is disabled by default so internal
function study(...)now releasespoleZerosRandpoleZerosIbefore- script execution now avoids repeated
processTxt()/temporary-file overhead - script execution now evaluates simple scalar assignments, loop conditions and
processTxt()now releases temporary answer arrays used while processing TXTinitialProcessor()no longer allocates four large matrix scratch matricesarithSolver()now releases temporary amplitude and sign arrays on the- Release builds now set linker heap reserve/commit explicitly
values and frees them before returning
samples instead of DIMDOUBLE
input and no longer depends on oversized zero-filled arrays
based on the number of submitted values
null inputs more safely
immediately before delete[]
capacity when validating before release
WinHTTP handles before returning
allocation
fields instead of allocating DIM-sized temporaries
one/two-character replacement keys
Variable-> ... variableData-> ... diagnostics no longer appear in normal interactive output
returning, avoiding repeated memory growth in that path
for simple print("...", ...) statements
integer print arguments through a lightweight in-memory path, while keeping the legacy parser as fallback for more complex expressions
and script commands
for scalar expressions
normal return path
(x64: /HEAP:150000000,4194304; Win32: /HEAP:50000000,1048576) and remove duplicate manual /STACK options from AdditionalOptions
Variable-name improvements
ATC now accepts broader Latin-letter variable names such as data, energy, beta, alpha, matx, matrixvar, sinx and bvar. This removes many legacy single-letter parser restrictions without allowing exact collisions with reserved names such as sin, log, pi, e, i, B, O, H, P, D, b, min, max and avg.
The parsing changes also protect guide syntaxes that use internal delimiter letters, including rtD...D(...) and logb...b(...).
Automatic multiplication coverage
The suite now validates inferred multiplication across constants, functions, parentheses, imaginary values, custom guide syntax and variables. Covered forms include 2pi, pi2, 2e, 2sin(pi/2), sin(pi/2)2, 2(3+4), (1+1)(2+3), 2i, 3(2i), 2rtD4D(16), 2logb2b(8), 2x, x2, x(4), (4)x, xy and x y.
Composite variable names keep priority after whitespace normalization. If xy exists, xy and x y resolve to that variable; if only x and y exist, the same forms resolve as x*y.
Regression testing
New files:
tests\run-atc-regression.ps1
tests\run-atc-memory-stress.ps1
tests\run-atc-script-benchmark.ps1
tests\ATC_AUTOMATED_TEST_CASES.md
Run:
powershell -ExecutionPolicy Bypass -File .\tests\run-atc-regression.ps1 -AtcExe .\x64\Release\atc.exe
Current result for both Release x64 and Release x86:
Summary: 377 passed, 0 failed
Script benchmark validation for the Multiplication Table 1-100 workflow:
powershell -ExecutionPolicy Bypass -File .\tests\run-atc-script-benchmark.ps1 -AtcExe .\x64\Release\atc.exe
Latest Release x64 result:
Summary: 4 passed, 0 failed
ElapsedSeconds: 7.41
PeakWorkingSetMB: 119.56
Current isolated coverage result:
Summary: 68 passed, 0 failed
Current SourceForge package validation result:
Summary: 44 passed, 0 failed
Memory stress run:
powershell -ExecutionPolicy Bypass -File .\tests\run-atc-memory-stress.ps1 -Iterations 10
Latest Release x64 10-iteration peak working-set observations:
simplify polynomial(...) ~115-117 MB
roots to polynomial(...) ~115 MB
solve equation(x^2-5*x+6) ~141 MB
solve equation(1\8\1\_42) ~144 MB
solve equation(x^7-12) ~165 MB
Covered areas:
- arithmetic
- constants
- trigonometry and inverse trigonometry
- hyperbolic and inverse hyperbolic functions
- logarithms
- custom arithmetic/log guide syntax:
rest,quotient,rtD...D, - matrix/list guide syntax:
min,max,avg, including matrix variables - matrix guide helpers:
linsnum,colsnum,getlins,getcols - direct matrix/vector indexing and persisted indexed matrix updates
- relaxed variable names persisted through
variables.txt - automatic multiplication deduction
- digital signal processing:
sinc,fft,ifft - probability/statistics inline functions
- sorting with
.txtreport export - ASCII and inverse ASCII sorting interactive flows
- roots-to-polynomial report export
- textual polynomial simplification
- exact rational polynomial cancellation in simplifier, solver and equation
- quadratic equation solver
- 2x2 equations system solver
- textual polynomial equation solver
- coefficient-form cubic equation solver
- high-degree coefficient equations and internal expanded polynomial forms
- graph settings display, graph settings mutation, graph smoke tests,
- TXT detector / command bridge commands, including
atc over cmd, mocked - file/folder command existence checks
- safe app-environment runtime paths, including
aboutand - safe runtime smoke coverage for deep interactive modules: unit conversions,
- persistent settings and interactive menu retry behavior
- interactive prompt autocomplete vocabulary, repeated-Tab cycling and
- long-running time command branches, short stopwatch marking, zero-duration
- verbose-resolution persisted setting, cleaned verbose output behavior, and
- Windows 11 console source-level behavior checks
doubleand Boostmp_floatprecision behavior- restart persistence of precision mode
logb...b, afact
solver paths
deterministic graph navigation simulation, navigation edge clamping and explicit graph-range navigation
atc from cmd, mocked to solve, mocked enable txt detector, safe eliminate strings, and real-file solve txt response generation
auto adjust window
microeconomics, physics, statistics, geometry, financial calculations, triangles rectangles solver and arithmetic matrix solver
Up/Down history navigation
clock checks and timer syntax guards
suppression of verbose traces for internal menu inputs
Build verification
Release x64 build succeeds with MSBuild:
& 'C:\Program Files\Microsoft Visual Studio\18\Insiders\MSBuild\Current\Bin\MSBuild.exe' '.\Advanced Trigonometry Calculator.sln' /p:Configuration=Release /p:Platform=x64 /m:1
Release Win32/x86 builds are also supported by the solution and remain a compatibility target for older Windows versions. The current regression suite has been validated against both x64\Release\atc.exe and Release\atc.exe.
The latest Release x86 and Release x64 builds completed successfully with 0 Warning(s), 0 Error(s).
Known limitations
The automatic suite intentionally avoids:
- shutdown, restart, hibernate, sleep and lock commands
- full-duration clock, stopwatch and timer views
- commands that open external browsers or editors, except for TXT/file flows
- full live manual graph rendering and live key-buffer behavior
- remaining branches inside deeply interactive modules such as triangles,
covered through explicit test mocks
arithmetic matrix solver, conversions, finance, physics, microeconomics and statistics menus
Files touched in this release work
Important code areas:
Advanced Trigonometry Calculator\main.cpp
Advanced Trigonometry Calculator\auto_complete.cpp
Advanced Trigonometry Calculator\commands.cpp
Advanced Trigonometry Calculator\dirent.h
Advanced Trigonometry Calculator\main_aux_processor.cpp
Advanced Trigonometry Calculator\processing_core.cpp
Advanced Trigonometry Calculator\scripting.cpp
Advanced Trigonometry Calculator\stdafx.h
Advanced Trigonometry Calculator\dynamic_allocations.cpp
Advanced Trigonometry Calculator\digital_signal_processing.cpp
Advanced Trigonometry Calculator\sorting.cpp
Advanced Trigonometry Calculator\statistics_calculations.cpp
Advanced Trigonometry Calculator\check_for_updates.cpp
Advanced Trigonometry Calculator\versioninfo.rc
README.md
Documentation and tests:
docs\ATC_2.1.7_DOCUMENTATION.md
docs\RELEASE_2.1.7.md
tests\ATC_AUTOMATED_TEST_CASES.md
tests\ATC_USER_GUIDE_COVERAGE.md
tests\run-atc-regression.ps1
tests\run-atc-isolated-coverage.ps1