MathSuite Changelog

What's new in MathSuite 5.0

Sep 2, 2013
  • Totally optimized code and Fixed every imaginable bug into the program, at least the ones that afflicted the program since this update. Added a Fabulous C Parser System and inline functions solver. That's EXPREVAL.
  • Now you can manage, calculate various EXPR Expressions and store their results into run-time variables!!!
  • You can perform a Variable List, simply by storing multiple variables with different textual identifiers. And that's not all. You can also store this Varlists into particular files called .msvl, (which means Math Suite VARLISTS). It was added an entire program section to manage these MS Environments,that is an alias for Variable Lists. Variable saving, mantaining and checking processes is totally provided with many hard-coded scripts which, by following the Program Settings Instructions related to this system, store them into the respective files on each expr calculations, or let it onto memory until program is requested to exit and to flush the informations on the Disk. Another system of this genre was implemented for Matrix File.
  • Extraction Feature. Right as the Varlists, you can store matrixes into Files and later reading them from the Disk. Another program section, located into Linear Algebric Operations, was added to manage Matrixes.
  • Each Matrix printed is saved in memory. You can equal it to the Current Matrix, simply by typing "get" in each ExprEval INPUT Requesting phase. For using the Current Matrix on a calculation which requires a Matrix, simply do type "set" and Program will equal the Working Matrix of the related subprogram to the C.M.
  • Added also a Log Tracking system, which allows you to register every text-line shown in the program at run-time. Various Log files could be loaded in memory, as the previous Lists Item Types upwriten, like Environments and Matrixes
  • There is a Current USRLOG File in which the User Executions (like Expr/Matrix calculations will be stored) and also different .LOG Files that are ready to swap with the Current one if you desire it, in any moment.
  • There is also a SYSLOG Management System that stores in a selected .LOG File various System Executions and Settings Changings instead. Default SYSLOG name is (syslog.LOG). However, at the First Execution of the suite, it is not activated. To enable its execution and functionalities, you must confirm it at the Relative SYSLOG
  • Management Program Section, where also you can set its bufferlen, edit it, rename it and also swap it with others .LOG Files saved on Disk. There is also a third Lists Item Type, the LAYOUTS one. This system will allow you to stores Settings List into an .INI File, exactly with the same structure of config.INI one. In the related Program Section, located into Edit Program Settings, you can Select the CURRENT SETTINGS LAYOUT, or do perform the normal C.R.U.D. (Create, Read, Update and Delete) operations on different Layout previously loaded into the memory. Lists System Items are stored in Heap Memory region, and their storage method is based on the normal, well-known Double-LINKED-LISTS System, that links each nodelist to the next and prev ones.
  • However, this Program is equipped with a Fast-Recognizement System which searches the Element you want by starting Search in each direction and breaks it when the Items is found. And Program also is based on Fast-Intelligent-ItemID indexing system, which will returns you the Structure contained the pointer to the requested Data, by taking the shortest route in memory. Introduced a new Settings Memory Storage System, which is based on Bitmasks Improved Usages to abstract Bitflags system one. So a single unsigned variable, obviously incapsulated into the suite structure is used instead of n-settings bool variables, which will exagerately use the stack memory. You can also now decide if you want to storage suite main structure into stack or heap, respectively by managing the STACKALLOC Object Macro Definition. Heap Alloc hasn't been tested yet, but you'll gain a considerable speed increase in theory, at the expense of the Numbers of Lists Items loadable in Heap memory, such as ENVS, MATRIXES, LOGS and LAYOUTS. Added a new system (WINDOWS Only) of Colors Management.
  • You can load an .INI file containing informations about the use of the available Colors in the program.
  • You can view colors.INI default Colors File in order to know how to use this Feature.
  • Added also a new system that allows you to load different Lists Items (ENVS, MATRIXES, LOGS and LAYOUTS), simply by putting its fnames in a .msinf file. Program will load the Items Instances after recognizing them by its extensions. Default ones
  • Added a very complex Matrix Back-Tracking system, that allows you to back-track to a previous raw/column simply by typing "back", while inserting a new element into the Matrix and staying in ExprEval Parsing System Settings ENABLED. Code Optimization now includes the exclusive use of pre-increment operator instead of the post-increment one, because this will remove the very-expensive caching mechanism of variable previous value.
  • Optimized also all loops: reduced and eventually deleted overhead in the 90% of the programs loops, by using functions pointers instead of performing every time an 'if' control structure et similia.
  • Hard-Prototypized every programs functions, also the private static void ones, by adding attribute lists on each of their declarations. Now it's easily visible whether a function is a system function (so, essential and very important for having program correctly working), simply by checking if it has __system attribute, or if a function is a static void (private) or simply not much portable (because is strongly hard-coded for MathSuite calculus environment by checking if it has _MS__private attribute. For safe-portable functions you must see for the __export attribute, which (untested proposition) causes defined behavior on some particular IDEs
  • Added a very powerful and memory-leak PROOF Memoizer System, which allows you to memorize results of the main optimized functions of MSCEnv (MathSuite Calculus Environment), such as Fattoriale and Fibonacci, one time they are computed. However, the system will work until a certain index, whose value is stored in the Current SETTINGS Layout. After that, every results of a specific index is calculated normally without mem optimization
  • Added ADVANCED_CALCULATOR subProgram, which presents these Children Subprograms: SecondGrade Equations Solver, that by inserting a 3x1 Matrix containing a, b, and c coefficients of ax^2+by+c linear equation std form, allows you to Solve this equation, as the name suggests. There are also simple Complexes Sum and Product subprograms, which functionality is obviously known. Also there is the possibility of Getting a Formatted Date in function of a numeric one in the standard EU Format: DD/MM/YYYY. Other subprograms are: Newton Difference Tables, Lagrange Interpolation, Greatest Eigen Value, Function Integration (DEFINED Integral (Riemann) and somehow functions must be chosen by a default list), Straight Line Fitting, Parabolic Curve Fitting and also a very useful and powerful Linear Systems Solver, which allows you to solve multiple equations simply with the entering of the respected System Matrix, which consts of (n+1) Columns, where n is the number of simultaneous equations that inhabitates the System. Added a CmdLine RSystem, which emulates the Windows NT MS-DOS Based CMD Prompt. Obviously, command are Math Orientated and reflects totally the Suite Standard Functions.
  • You can insert multiple parameters separated by a space (seperator system and management will be enhanced in future version of the program). To this feature is dedicated an entire section whose access point is located in the Main Menu (MathSuite Scripts Management). You can enter a CommandLine directly by the program and you can also load MathSuite scriptfiles, whose extension is tipically .mhss or .msscript (which remembers more than other a Windows .bat Batch File). This file must contain in each line a MSCenv Command. In order to know usages of the various commands, there is a dedicated subprogram in this SPS Section (Show Command Usages). You can obtain a singular command usage by inserting as a [STRING] param the name of the CMD (cmdname) or also you can see the entire CMDLINE MacroList, with the relative usages. If you fails to write a command after entered it, MS environment will default show you its usage and re-link you at the Standard CMDLine Program.
  • Improved the inlining of some short-sized functions and enhanced the MINMAX MS Native Embedded powerful system.
  • Replaced the deprecated BubbleSort algorythm to ordinate a vector with the qsort C Native Libraries implementation one
  • Removed the Descending Order Option in Matrixes Sort subProgram, which I think useless and stacksize-eater.
  • Removed the max_raws and max_columns management Program located into change_settings.c files, cause these values seems to be more significant defined as Object Macros, since It must not be changed at run-time.
  • Changed the type of some derivate functions like fasum, fnnsum, fsum from uint64_t (unsigned long long) to ityp (Standard MS double Type). Added a basilar Printing System for ENVS, MATRIXES, LOGS, SysLOG and LAYOUTS, available both for WINDOWS and UNIX systems. The unique difference between them is that whilst in Windows you can select the Device, in UNIX you cannot and spooling settings are default-set. However, this feature hasn't been tested yet). Enhanced SecurityCheck, now the Stack is high-protected by some controls that are strongly hard-coded into program. The Exit Button is now disabled during Matrix Inserting Processes. This preserves the unexpected exits from the program when malloc, calloc and free NATIVE malloc.h library functions are working . This system has the advantage also of prevent the memory getting too segmentated (works only on WINDOWS).
  • System you must apport some changes to the source code and recompile-it under UNIX Environments, by following also the Build messages advices that compiler or IDE provides for you.
  • Added a new system of calculating the Determinant of a Square Matrix, by upper-triangularizing it with the respective matrixUTConv, which I implementated under checking Bibek Subedi programming-techniques.com various pieces of code. This technique has been also used in other Suite SubPrograms, like Linear Systems Solvers (also partially taken from that website). Now Rank Calculator Modules uses Jacobi SVD (Singular Value) Decomposition, which I taken from the web and optimized & converted to get working on my program.
  • Added the possibility of viewing the DATE and TIME on every single ProgLine when the related Bool Setting Var is Set in the Current Layout. You can also decide to see the Average Time of each ExprEval Computation or the Execution Time of Every SubProgram, including the Access Point ones (the ones that allows you to get in a program menu section), simply by enabling respectively the DiffTime and ExecTime Bool Vars ones in Current Layout. Enhanced the Mechanism of Selecting the Item from a constant strings list.

New in MathSuite 4.2 (Sep 2, 2013)

  • Optimized Code and Fixed some bugs into matrixProduct, precisely in the MATRIX_POWER subProgram.
  • Now the product system is more efficient and readable. Now MATRIX_POWER gives in OUTPUT correct results.
  • Enhanced Domain Check System into Trigonometric Operations, by inserting a new inline function which checks by using a loop whether the number is equal to M_PI_2 + k*M_PI. This may be useful for example to check if a certain INPUT Parameter belongs to the tan(x) Domain. The Precision of this System is not guaranteed if use Radiant Parameters Entering System. Yeah, you could now choice your Trigonometric Operations Parameters Entering Modality, by managing its own boolean settings, located into Change PROGRAM Settings SubProgram.
  • If you want to use a High-Level TRIGONOMETRIC_DOMAINs Checker, you have to enable Degrees Parameters Entering System, because the Degrees to Radiant Conversion System, gives the System a more precise Result to the various functions, and in this case, to the trigonometric_domain(n) inline function, both declared and defined in a new Header, called ext_math.h as EXTERNAL Math Library, where some constants and functions has been re-defined. In this Project Header I put all the Properly Math Functions, both declarations and both definitions, for increasing the Code Readability cot(n), csch(n), sech(n), coth(n), acsc(n), asec(n), acot(n), acsch(n), asech(n), acoth(n)
  • Added also cbrt(...) Standard Function into Base Calculator subProgram, which calculates the Cubic Root of a given ityp INPUT Parameter. Enhanced the calcolatoreDiBase() related function, particularly the Operations ID
  • Recognizement System. Fixed a bug into BASECALC_SOMMAPRIMINNUMERI operation, which didn't display correctly the Sum Result. Enhanced RANDOM-SEED Initializing and Management System, by redefining its default init
  • Redefined Some Program Structures Fields, by using Bit-Fields assignments. This will not increase in considerable way the Program Speed, but it is a good approach If I i will introduce new array/tables management systems, whose raws and columns Dimensions ID will be probably incapsulated into BitFields-ful structures.
  • Eliminated AUTO_TRANSPOSE Setting, used in the first versions of the Suite for debugging and speed-testing MATRIX_POWER MACRO subProgram. Now it's possible to execute matrixProduct() function and all of its Macro

New in MathSuite 4.0 (Sep 2, 2013)

  • Introduced new config.INI Initial Settings Configurations, but by excluding Back to MAIN MENU Char and all the Operations Chars, because GetPrivateProfileString is giving me problem, both Unicode (W), both ANSI (A) version, tested respectively on UNICODE config.INI and ANSI config.INI. However, I let Standard ANSI config INI file in the Official Version. Moved all DEFAULTS Program Settings Value Constants into defaults.
  • New header, correctly linked to the Current Project. Introduced new Showing (Sub)Programs Descriptions by reading the correxpondant file, whose name is formatted following a certain algorythm rule that is defined into engageDescriptions function, located in geometry.c library file.
  • Introduced MsgBox system for Long Strings
  • You could try its usefulness by requesting to the program to Show a certain Program Description. This was implemented for not to fill excessively the stdout buffer, whose dimensions are very important for a fast and clean execution of the calculus environment. Transformed the Program Information STATIC (SUB)MASK, whose name in the program is "Informazioni sul PROGRAMMA", into a Dynamic Macro, where now the relative Informations it gives dinamically refers to the Current Father (Sub)Program Description. Fixed a bug in the matrixProduct function, which was causing an HEAP OVERFLOW with the Lazy Execution bool value disabled (now I've renamed STABILIZER+INITIALIZER System's correxpondant bool value name in Lazy Execution.
  • If the Lazy Execution is enabled, then STABILIZER+INITIALIZER action is not present, else there will be the mechanism here descripted concerning Dynamic Matrixes Mallocation. This is an evident tribute to Lazy Evaluation Programming
  • Languages technique of evaluating a statement or an expressions possibily only when It is requested effectively. Performed the ERRORS Management System by using external variables errno, located into errno.h native header file. Now you could gain more informations on happening of a certain Error, by viewing the ERROR

New in MathSuite 3.5 (Sep 2, 2013)

  • Removed all type strict controls. Now, even if ityp default type is pre-compilation changeable, whereas it's directly involved in INPUT/OUTPUT FORMATTATIONS, it will be necessary some modifies in this script zones each time you change it. However, I put in CONFIG.INI some facilitations about this not simply work.
  • Introduced OVERFLOW CHECKER in all INPUT/OUTPUT numeric elaborations. If Domain Check mode is enabled, then System will print you the classic "OVERFLOW ERROR". Fixed a bug into DivisionModes-0-Inserting-Proof System.
  • Now it works perfectly. Code cleaned and highly improved executing speed. I also inlined some basic not-complex functions.
  • Obviously this had the bad inevitable side-effect of increasing total script size. But it's a good affair since nowaday progress difference between CPUs and memory is unimaginable.
  • Improved media and media_geometrica, which are the two relevant features added in the last version in Base Calculator subprogram. Now both requires the b parameter to be entered. If it isn't 0, then Media will increase, else it don't. Improved all the inlined prestigious successions functions like fibonacci and factorial, by adding unsigned INVERSE_OPS at the int64_t (long long int) formal parameters type.
  • Introduced Armonic Mean, Power Mean, Mean Value and Median in Base Calculator subprogram.