The interactive file manager requires Javascript. Please enable it or use sftp or scp.
You may still browse the files here.

Download Latest Version mathSuite710SSSE3.zip (2.2 MB)
Email in envelope

Get an email when there's a new version of mathSuite

Home
Name Modified Size InfoDownloads / Week
mathSuite710.zip 2014-11-16 2.3 MB
mathSuite710SSSE3.zip 2014-11-16 2.2 MB
readme.txt 2014-11-16 64.8 kB
mathSuite685.zip 2014-10-04 2.2 MB
mathSuite685SSSE3.zip 2014-10-04 2.2 MB
mathSuite680.zip 2014-10-03 2.2 MB
mathSuite680SSSE3.zip 2014-10-03 2.2 MB
mathSuite680+MSP.zip 2014-10-03 2.8 MB
mathSuite680SSSE3+MSP.zip 2014-10-03 2.8 MB
Totals: 9 Items   19.0 MB 2
mathSuite
//-----------------------------------------------------------------------------------------------------------------//
AUTHOR: Marco Chiarelli aka DekraN aka Wesker013 (FB)								   ||
CURRENT VERSION: v7.10											   	   ||
LAST UPDATE: 16:00 16/11/2014											   ||
CONTACT ME at: marco_chiarelli@yahoo.it										   ||
or at marcochiarelli.nextgenlab@gmail.com									   ||
//-----------------------------------------------------------------------------------------------------------------//
///CHANGELOG v2.5: Fixed every imaginable bug and started     							  ///
///    object-oriented style programming in the code skeleton, by treating the programs structured variables      ///
///                       as an object-oriented-language class definitions.                                       ///
/// Introduced Families Programs System, as a new type, which contains other childs programs, and one of these    ///
/// could be itself a new access point for a new Programs Family. Sincerely don't know whether this system could  ///
///     improve or not suite performances. I'll ask more informations about this to the Professor Bochicchio.     ///
///     Added new simplifying Vectorial MACRO-Operations and Introduced Inverse Operations for L.A. Programs.     ///
///             You could use them by enabling associated setting in the Settings Program.                        ///
/// If the Automatic Deactivator for the I.O. is Active, then the program turns back to Normal Operations after   ///
/// each Opposite Operation Process. Else, Opposite Operations will remain active until you disable them from SM  ///
///                                      CHANGELOG v3.0 (30/04/2013) -                                            ///
/// Added rank calculator for a [nXm] Matrix, inverse calculator for a Square Matrix, transpose calculator for a  ///
/// [nXm] Matrix. Now it's possible to set some default values and pre-compiling params from CONFIG.INI, whose    ///
/// environment I've made the most user-friendly possible. Completely redefined the code and increased to more or ///
/// less 15% calculus speed level of various subprograms. Enhanced explicit cast performance in calcolatoreDiBase ///
///   subprogram, and Added char_insert boolean value in order to check whether user inserts char or not in the   ///
///                      various Matrix inserting checkpoints of the entire program.                              ///
///                                      CHANGELOG v3.2 (09/05/2013) -                                            ///
/// Added Dynamic Memory Allocation concerning Matrix. Automatic Matrix Inserting System is now more simple and   ///
/// faster. Allocation System is M.L.R.F. (Memory Leak Risks Free), because I checked every single instruction    ///
/// concerning enterMatrix(...) function and resulted 100% protected. There is no risk malloc, realloc and free   ///
///   functions used by me could enter in another memzone except the one and only my program needs. Introduced    ///
///            (Initializer+Stabilizer) for Matrix Allocation. Normally my program would allocate every           ///
/// new columns or raws's necessary size every time a new matrix item is entered by A.M.I.S. (upwriten meaning)   ///
/// If Initializer+Stabilizer binary setting is enabled, then INITIALIZER will allocate a quantum of memory size  ///
/// necessary for various both raws and columns BEFORE that User could start to Enter The Matrix. This memory     ///
/// size depends by 'ityp' program default type size, and by a constant value first defined in CONFIG.INI         ///
/// but changeable during program execution), named fattore_stabilizzatore (Default Value) or STABILIZER_FACTOR,  ///
/// which is the variable name that is physically located into memory. Every time User trespasses this memorysiz  ///
/// quantum, INITIALIZER+STABILIZER action will provide to autoincrease its size, exactly like the way            ///
/// updescripted. At the end of the User INPUT, STABILIZER will reallocate the matrix, by eliminating the unused  ///
///   memory which INITIALIZER+STABILIZER allocated for the last time. Don't know whether this memory is faster   ///
///      than Normal Mode of Dynamic Memory Matrix Allocation or not. As always, I'll discuss this problem with   ///
/// Professor Bochicchio ASAP. My first hypothesis is that Normal Mode is more performing, because S+I method     ///
/// will give less instructions to the CPU to process, but HEAP memory region size will lineary increase          ///
/// depending by STABILIZER_FACTOR; and so I suppose you know, memory is not faster as CPU. Now Matrix Inserting  ///
/// system could be defined in CONFIG.INI and also changed during program execution. The two possibilities are    ///
/// Automatic (normally used) and non-Authomatic, that requests to the User the Matrix Dimensions every time he   ///
///     have to Enter a Matrix. Now it's possible to set Program Default Type, by modifying the relative ITAnamed ///
/// variable onto CONFIG.INI. This type could be float, double, long double, int, short, long int, long long int  ///
///   and also char!!! This means you could work with Chars Matrix, and it's not a useless feature, since C char  ///
///                                  type is native lexicographic ordered.                                        ///
///                                      CHANGELOG v3.35 (11/05/2013) -                                           ///
///      Introduced famous successions calculus, like Fibonacci, Geometric and the Generalized Armonic ones       ///
///                  and also the possibility of calculate their sum at a specified INDEX.                        ///
///      Introduced Arythmetic and Geometric Media calculus, and Added simple Summation System.                   ///
///          All these features are simply achievable by starting calcolatoreDiBase subprogram                    ///
///                                      CHANGELOG v3.5 (15/05/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.        ///
///                                      CHANGELOG v4.0 (23/05/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.h new     ///
/// header, correctly linked to the Current Project. Introduced new Showing (Sub)Programs Descriptions by reading ///
/// the correspondent 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 correspondent 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 ///
///                                        TAG/ID that will be printed.                                           ///
///                                      CHANGELOG v4.2 (26/05/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);          ///
///   For More Informations, see MAT-LAB Calculus Environment infos, in which you can find the Full Documentation ///
///                                      about their definitions, domains, etc.                                   ///
/// 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       ///
/// type into time_t, because actually, starting_random_seed captures the Current Time by using time(NULL) time.h ///
///                          defined function. Enhanced INPUT/OUTPUT Formatting System.                           ///
///                       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    ///
///                                          with incredible Speed!!                                              ///
///                                      CHANGELOG v5.0 (06/08/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!!!     ///
/// Yeah this isn't a joke. 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.     ///
/// However, you have to stay alert because some Programs, you know, requests only square or nXm strong-checked   ///
///     Matrixes, and if you try to equal the W.M. to a C.M. which doesn't have correct requirements for that     ///
/// subprogram, its execution will promptly went discarded and an Error Message will be shown to you. 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    ///
/// 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///
/// I remember, are .msvl for VARLISTS, .msmat for MATRIXES, .LOG for Logs, .INI for LAYOUTS. An example-default  ///
/// MathSuite Information File is autorun.msinf, located in the main root of the program.                         ///
///      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).   ///
/// IMPORTANT ADVICE: Program isn't completely portable now. For getting the Suite right-working on UNIX based    ///
/// 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... I recommend Code::Blocks for WINDOWS ///
/// users. Now it's hardly recommended to exit by the related Option that Programs offers to you. This will allows///
/// you to safeExiting the program and NULL-Setting all the pointers (could apparently be useless this feature but///
/// it isn't really) and some particular variables that deals with Memory Management (such as the Dynamic Array of///
///                             of Pointers for the MS Embedded Memoizer System).                                 ///
/// 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.       ///
/// Substantially, RkCalculator now takes the Filed Singular Values Vector from this function dsvs(...) and count ///
/// its non-zero elements. Now, when using DMA (Dynamic Memory Allocation), it's used calloc function instead of  ///
/// malloc one. This was done for Security Reason, because, even If very-unlikely there could be a bug on Matrix  ///
/// Calculations, It can't damage memory or brings the program to freeze or crash, because a nan value, even If   ///
/// wrong, could block its execution. However, I planned to insert a very powerful saturate addiction system that ///
/// blocks execution before computation. Even if there is a Basilar Overflow Checking System, implemented in      ///
/// programs former versions, and even If it has been also enhanced in this update, could be wrong and so, could  ///
/// inform you too numbers later of the Inconsistent Result you get. So, even If partially deprecated, this base  ///
/// system is efficient and powerful meantime, because a Saturate Addiction (or Algebric Sum somehow) requests    ///
/// two or three control structures that could (Even If in a not considerable way) affect the Execution Time.     ///
/// 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. This is also used for      ///
/// choising the itemID of a Lists Items when handling __lmp_prog (Lists Manager Program) and means more powerful ///
/// optimizations given to the program. Completely redesigned the Prime_N_Number functions, improving a new       ///
/// mechanism of checking whether a Numer is prime or not. They are available two algorythm to perform the Sprgrm ///
/// , respectively isPrimeHISP and isPrimeLIFP (the first works on High Iterations Low Process and the second     ///
/// on Low Iterations, Fast Process). When Lazy-EXECUTION CurrentLayout Bool Var is Set, isPrimeLIFP is used,     ///
/// otherwise HISP method will be. Enhanced the Presentation Layer and worked so hard to get a primitive and very ///
/// confidential INPUT/OUTPUT Interaction. In order to increase the speed when inserting a new Matrix, ExprEval   ///
/// Parser System combined to my work gave you the possibility to use the different Environments Variables also   ///
/// when performing Automatic Matrix Inserting!!! This means that you can calculate for example, three variables  ///
/// with BASECALC subProgram and use their values with other computations directly performed into the [2,3] item  ///
/// of a Matrix getting run-time inserted. Even if is strongly recommended to use ExprEval to do computations     ///
/// involving complex EXPR, the old BASECALC method is still present. If you want to use It, simply disable       ///
/// the Parsing for BaseCalc Program Setting Option of the C.L. (Current Layout). Basecalc Traditional way of     ///
/// calculating isn't really useless, because the OVERFLOW_CHECKER and DOMAIN_CHECKING systems, works only in the ///
///   traditional mode. The Math Errors routine with the Parser ON are managed directly by ExprEval, so by its    ///
/// errors manager own .c files. Somehow you must not get yourself involved with Math Errors very frequently,     ///
/// when a 'nan' value is displayed (some bug for example), means that you overflowed an ityp value (still EX..)  ///
/// Introduced also a simple ALIASES System that allows you to have more Aliases for the same Traditional BCALC   ///
/// command. This system, for simplicity reasons, is suitable only with having the source code re-compiled. All   ///
/// these features that require re-compiling the program are however not useless since MathSuite Environment is   ///
/// aimed to Open-Source Programming, Portability and WIN-UNIX oriented. Added a basilar but powerful catchPause  ///
/// system, consisting of giving user the possibility of blocking a subProgram execution while for example,       ///
/// printing a vector or File content, simply by pressing CTRL+C. This could be useful when listing prime numbers ///
/// whose execution and numbers printing could easily overflows your stdout buffer too early and not more giving  ///
/// you possibility to see previous results. Now you can Flush also the stderr file buffer. Added three new sprogs///
/// into algebra.c subfile: SMatrix LU Decomposition, Matrix Ill Condition Checkin, Square Matrix Norm Calculation///
///                                 and also SVD Matrix Decomposition Vector Viewer                               ///
/// 				Syntax optimized and Code optimized [06/08/2013].				  ///
///                                         CHANGELOG v5.2 (05/08/2014)					 	  ///
/// Fixed a lot of little bugs that afflicted the program in some non-standard situations. Syntax optimized and   ///
/// Code highly optimized. checkItemTypeByExtension has been redesigned in order to increase speed execution      ///
/// while checking items extensions, for example in loading a .msinf startup file. Fixed a bug in the Primality TS///
/// Engine, by adding the "2" Prime Number, considered obvious in earlier versions. Now the default mode of suite ///
/// main vars structures' allocations is Heap Mode. (STACKALLOC Macro isn't defined by default). Now the program  ///
/// seems to be more efficient and speedy, but probably the max logical number of items to allocate in memory has ///
/// been reduced, due to the main structure allocation. However, with the increasing of the executable dimension  ///
/// this has been inevitable. Added new 105 functions, respectively 95 trigonometric and pseudo-trigonometric     ///
/// (hyperbolic), and 10 exponential and logarithmic. These has been added both in Base Calculator and in MSCenv  ///
/// Parsing System. These are: hsin(a), hsinh(a), qsin(a), qsinh(a), hcos(a), hcosh(a), qcos(a), qcosh(a), hsec(a)///
///   hsech(a), qsec(a), qsech(a), hcsc(a), hcsch(a), qcsc(a), qcsch(a), htan(a), htanh(a), qtan(a), qtanh(a),    ///
///   hcot(a), hcoth(a), qcot(a), qcoth(a), vsin(a), vsinh(a), cvsin(a), cvsinh(a), hvsin(a), hvsinh(a), qvsin(a),///
///   qvsinh(a), hcvsin(a), hcvsinh(a), qcvsin(a), qcvsinh(a), vcos(a), vcosh(a), cvcos(a), cvcosh(a), hvcos(a),  ///
///     hvcosh(a), qvcos(a), qvcosh(a), hcvcos(a), hcvcosh(a), qcvcos(a), qcvcosh(a), esec(a), esech(a), ecsc(a), ///
/// ecsch(a), hesec(a), hesech(a), hecsc(a), hecsch(a), qsec(a), qsech(a), qcsc(a), qcsch(a), sinc(a), sinch(a),  ///
/// hsinc(a), hsinch(a), qsinc(a), qsinch(a), cosc(a), cosch(a), hcosc(a), hcosch(a), qcosc(a), qcosch(a), secc(a)///
/// secch(a), hsecc(a), hsecch(a), qsecc(a), qsecch(a), cscc(a), cscch(a), hcscc(a), hcscch(a), qcscc(a),qcscch(a)///
/// tanc(a), tanch(a), htanc(a), htanch(a), qtanc(a), qtanch(a), cotc(a), cotch(a), hcotc(a), hcotch(a), qcotc(a),///
///     qcotch(a), logc(a), log10c(a), log2c(a), exp10(a), expc(a), exp10c(a), exp2c(a), log1p(a), log1pc(a).     ///
/// These functions have been introduced also in the PRELoaded Functions Integration System, so giving the        ///
/// 	to integrate them, by using the available integration methods: the Simpson and the Trapezoidal.	  	  ///
///                    Corrected some translation error in environment printf phrases.                            ///
///                                     CHANGELOG v5.21 (06/08/2014)                                              ///
/// Added the Kronecker Product feature in the Algebra Operations Group. Fixed a bug in the main code, that       ///
/// have been crashed the program if it received a one-length string as argv[1]. Fixed a bug in the Matrix Sum    ///
/// subProgram, that maybe could cause an instant crash if the Second Matrix Entering process failed. (U.T.)      ///
/// Renamed some descriptions file in the apposite folder, that caused a bug if the program requested descriptions///
///                         for the Matrices Product and Matrices Sum subPrograms.                                ///
///                  Fixed some bugs and code optimized (these are minor things, however...)                      ///
///                                     CHANGELOG v5.50 (16/08/2014)                                              ///
/// Fixed and Optimized code. Fixed a bug into the Kronecker Product, that in some random cases could crash the   ///
/// program because an heap overflow at the moment of equaling the Last Matrix Printed (I remember that Kronecker ///
/// Product is slightly heavy for Heap Memory and also for CPU (it takes 4 nested for cycles to work)). Introduced///
/// Matrix Kronecker Power feature, that allows you to Kronecker-raise the inserted matrix to the inserted power  ///
/// exponent, like in the normal Matrix Power subProgram. Introduced the semi-factorial function. Its name is:    ///
/// "sfact", so I renamed correctly the Stabilizer Factor Function into "stabfact" or similar (see its ALIAS      ///
/// MACROS for further informations. This function works upon Factorial Memoizer System, but it hasn't an own     ///
/// Memoizer Engine, because its non proper standard complexity. Maybe i will introduce later a new MemoizerEngine///
///     for this purpose. Added the related function "sfasum". Fixed a bug into the appendTimeToString function,  ///
///   now instead of overflowing the stdout buffer and making illegible the Current Textual Environment, it will  ///
///append Current Time to each textline only if the Line Color if different from the previous one. But in some    ///
/// rare cases, like in MathSuite's logo printing process it isn't so useful. Automatized some Heap Dynamic Memory///
///       Allocation Management Processes, by incorporating some default routines into Matrices IO Functions      ///
///(for example matrixAlloc into insertNMMatrix). Fixed a bug (indeed it isn't a proper bug but my old            ///
/// technical choice) that have not included the number "2" into Prime Numbers Selection or Primality Tests.      ///
/// Introduced the Simplex Method, precisely the Non-Dual Simplex Method for solving PL Problems with non-negative///
/// variables. You can solve a simple PL problem with these characteristics, simply by inserting a Matrix         ///
/// containing Constraints Coefficients, and let the last raw contains the Functions Coefficients indeed, followed///
/// by an unique 0 element to align Matrix Dimension. Successively you have to inform the program about the       ///
/// Constraints Types, simply by inserting a n-dimensional Vector (following Program Instructions is relatively   ///
/// simple), whose i'th element has to be 0 if the i'th constraint is in the type of '<=' condition. It has to be ///
///                                     an integer different from 0 otherwise.                                    ///
///Added the new Algebra Selection system, that allows you to operate in different                                ///
/// algebras while performing Linear Algebra Operations such as Matrix Sum, Matrix Product or Matrix Power, Matrix///
/// Kronecker Product or Matrix Kronecker Power. You can choice from Real Numbers (naturally, the default option) ///
///, Complex Numbers, Quaternions, Octonions and Sedenions!!! Yeah you've heard me really!! You can also perform, ///
/// for example, a Kronecker Product with two Matrices whose elements are Sedenions! And naturally, the program   ///
/// will perform the atomic algebric operations between elements by following Selected Algebra Rules. But to do   ///
/// this, you have to insert: one Matrix in any case containing all the Real Parts of the numbers, and many       ///
/// matrices as many the Imaginary Parts of the Current Algebra are, simply by filling the respective matrices    ///
/// with the Imaginary Parts Coefficients of the numbers. The Imaginary Parts are: 1 for Complex Numbers (i), 3   ///
/// for Quaternions (i, j, k), 7 for Octonions (e1, e2, e3, e4, e5, e6, e7) and 15 for Sedenions (e1, e2, e3, e4, ///
/// e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15). Note that you can also perform single atomic operations    ///
/// between complex and hyper-complex numbers in the homonymous subProgram, that I've updated in this release, in ///
///           the Advanced Calculator Section, the same one in which Simplex Method new feature is located.       ///
/// Introduced the Tensor Sum subProgram, that allows you to sum two n-dimensional Tensors by performing n sum    ///
/// between the respective Component Matrices. Fixed a bug into Current Layout Parser, that because an integer    ///
/// overflow, program didn't read some Layout Values correctly, such as Matrix Max Raws, Matrix Max Columns, etc..///
///                                     CHANGELOG v5.55 (20/08/2014)                                              ///
/// Code optimized and Fixed some minor bugs. Fixed a bug into printMatrix function, that didn't allow you to     ///
/// equal the Snapshot Matrix (lmpMatrix) to the effective Last Matrix Printed, and even in some cases it might   ///
/// have crashed the program (for example in the Matrix Kronecker ORIGINAL Release (v5.21)). Fixed a bug into the ///
/// matrixTransposition function, that crashed the program If someone attempts to insert correctly the Matrix.    ///
/// Introduced Multi-Threading and Extensive Multi-Threading by using OpenMP (Open-MultiProcessing) libraries and ///
/// functions. It has been possible to parallelize all the critical sections which contain several independent    ///
/// iterations. Added the possibility to switch between Multi-Threading and Extensive Multi-Threading: the first  ///
/// one system, forces in some cases the creation of N threads; but if this N number exceeds the number of an     ///
/// 		hard-coded constant, defined both in defaults.h and successively in dutils.h, named		  ///
/// MIN_EXTENSIVE_MULTITHREADING_CORESNO, then let OpenMP manage the threads creation process. Elsewhere, with the///
/// 	Extensive Multi-Threading system enabled, program could appreciate the parallel power of more than, for   ///
/// example, 4 cores, because in this case, OpenMP will be forced to create exactly N threads. This operation is  ///
/// very important, for example, when operating in Different Algebras whilst performing Linear Algebra operations,///
/// because Algebra Units are all powers of 2 (example 2,4,8,16), exactly like the number of cores of a modern PC.///
/// The SemiFactorial's function implemention has switched to an iterated algorythm. Moreover, they have been     ///
/// created two different buffering channels, that serve as the new Memoizer Engine for SemiFactorial function.   ///
/// The first pipe deals with Even number, the second pipe with Odd numbers, because Memoizer System is strongly  ///
/// index-based and the SemiFactorial function itself needs two different type of previous values for computing   ///
/// 	its next value: respectively to calculate the semifactorial of a 2n typed number, it needs recursively	  ///
/// numbers in the form of (2n-2)!!, which is: 2(n-1)!! that are surely Even Numbers. Elsewhere, if n is an Odd   ///
/// 			number, it will require only Odd previous numbers to calculate its return value.	  ///
/// Introduced Stirling's Approximation in the Factorial function implementation: if the number of which we want  ///
/// 	 to calculate the Factorial, exceeds a runtime constant located into the Current Layout and named:	  ///
/// min_stirlingrequires_number, then fact(n) function will call the stirling(n) one, that is supposed to reduce  ///
/// considerably the Overflow Error. This optimization is valid also for the SemiFactorial function, but only for ///
///    Even number, due to the existant relation between Factorial and SemiFactorial: (2^n)*n! = (2n)!! ==>	  ///
/// 	    	(2n)!! ---> (2^n)*stirling(n). This is possible if 2n > 2*min_stirlingrequires_number	          ///
/// Renewed all the Selection Processes into Settings Manager: I replaced the deprecated do ... while method  	  ///
/// containing toupper(getch()) in its body, with the more powerful and secure selectListItem(...) function. 	  ///
/// This change has been applied to: "Change Algebra", "Empty Memoizers Buffers" and "Empty Buffers" subPrograms. ///
///                                         Code totally Optimized.                                               ///
///                                     CHANGELOG v5.60 (23/08/2014)                                              ///
///   Fixed some minor bugs and Code totally optimized. Introduced some statistic functions, such as: Variance,   ///
/// Covariance, Standard Deviation, Outlier Test, First Quartile, Third Quartile, respectively with these 	  ///
/// identifiers: var, cov, stddev, otlr, otlr2, q1, q3. Fixed a bug in the Mediana Function, which wasn't 	  ///
///doing correctly its job, because an inverted test of a compact boolean expression. Parallelized some code areas///
///	Optimized some iterations structures in the Base Calculator, precisely in the Statistic V.A.R.		  ///
/// (Vector-Accumulating-Requires) Functions, like media, etc... Removed all the Temperature Conversions Functions///
/// and also the Speed Conversion Function, because even If they're pretty smart and useful function, they're also///
///					too specific for a Math Related program.				  ///
///                                     CHANGELOG v5.70 (29/08/2014)                                              ///
/// Discarded the .INI system for gathering informations about Program Settings and Colors Settings, and replaced ///
/// with the XML metalanguage for the same purpose. The Layouts System works exactly as the previous versions.    ///
/// Renamed all the extensions of the program: .msvl to .vlf (it stands for Variables List File), .msmat to .mf   ///
///   (Matrices Files), .mhss to .mss (MathSuite Scripts), .msinf to .lf (List Files).				  ///
/// Now the presence of autorun.lf startup File isn't requested anymore, because even If the program is not be    ///
///    able to load at least a Layout File, then It will create a default settings.xml or colors.xml file. 	  ///
/// Now it is possible to save the Exit Char and the Outlier Constant into a Layout File. Added the following	  ///
/// commands: ec, oc, map; respectively the first one changes Exit Char, the second will do the same for the      ///
/// Outlier Constant and the third command, if Base Calculator Parser is enabled then It will apply a function to ///
/// an inserted value. The function is identified by a constant inserted by the user, named FID; if Basecalc	  ///
/// Parser is enabled otherwise, then it will apply to the function to a vector. This vector is inserted by       ///
/// following the V.A.R. functions standard method (by accumulating a vector into stack and then free it when you ///
/// have inserted all the elements). When you're done, then you have to insert a different value of the FID in    ///
/// order to stop Vector Accumulating Process. Otherwise you have to insert the same initial value of FID to      ///
/// continue. Fixed some minor bugs and Code highly optimized and stabilized the program run-time execution.	  ///
///                                     CHANGELOG v5.75 (01/09/2014)                                              ///
/// Added Permutations, Permutations with Repetitions, K-Permutations, K-Permutations with Repetitions and        ///
/// Combinations with Repetitions, with the respective commands: "perm", "permrep", "kperm", "kpermrep", "combrep"///
/// 			Removed "Vector per Vector" MACRO SubProgram, due to an undefined bug.			  ///
///                                     CHANGELOG v6.00 (04/09/2014)                                              ///
/// Now the Matrix Base Type with double-reference pointer of double base-type has been changed to a single-ref   ///
/// pointer. Now the maximum reference depth level present in my program is three (for the Tensors Sum feature).  ///
/// Optimized program and deleted all metadata management system related to the previous method of allocating a   ///
///  new chunk of memory every time that a matrix needed a new raw. Added the "restrict" qualifier type to the    ///
/// single-reference M.B.T. (Matrix Base Type) in the first-level functions arguments. Fixed a bug into the       ///
/// Complex and HyperComplex both Sum and Product subPrograms, that didn't allow to view correctly the Result of  ///
/// the Operation due to an array field accessing problem. Now the S.E. (STABILIZER+INITIALIZER) System, known    ///
/// also as M.S.D.M.A (mathSuite Dynamic Matrix Allocation) has been deprecated due to some problems occurred with///
/// 	the introduction of the Single Reference M.B.T.. So, the Stabilizer System works only with vectors.       ///
/// Added "qsum" and "qprod" inline functions, that performs respectively Sum and Product between two Quaternions.///
/// 				    Code Totally optimized and fixed also some minor bugs. 			  ///
///                                     CHANGELOG v6.50 (10/09/2014)                                              ///
/// Fixed a bug into the extensive multi-threaded matrix Sedenions Product routine, which didn't perform correctly///
/// the operation on the e6 base-field of the matrix. Introduced new 154 complex functions, respectively 120      ///
/// trigonometric and pseudo-trigonometric (hyperbolic), 23 exponential and logarithmic, 5 about complex          ///
///   argument and complex and hypercomplex numbers absolute values, 2 are quaternions inline Addition and        ///
/// Multiplication and the last 4 are the extensions of the 1P Logarithmic Functions (inclusive of the Cardinal   ///
/// Versions) at the other bases. All these functions are respectively: chsin(a,b,&rrp,&rip),chsinh(a,b,&rrp,&rip)///
/// cqsin(a,b,&rrp,&rip), cqsinh(a,b,&rrp,&rip), chcos(a,b,&rrp,&rip), chcosh(a,b,&rrp,&rip), cqcos(a,b,&rrp,&rip)///
///cqcosh(a,b,&rrp,&rip), chsec(a,b,&rrp,&rip), chsech(a,b,&rrp,&rip), cqsec(a,b,&rrp,&rip), cqsech(a,b,&rrp,&rip)///
/// chcsc(a,b,&rrp,&rip), chcsch(a,b,&rrp,&rip),cqcsc(a,b,&rrp,&rip), cqcsch(a,b,&rrp,&rip), chtan(a,b,&rrp,&rip),///
///chtanh(a,b,&rrp,&rip), cqtan(a,b,&rrp,&rip), cqtanh(a,b,&rrp,&rip), chcot(a,b,&rrp,&rip), chcoth(a,b,&rrp,&rip)///
///       ,cqcot(a,b,&rrp,&rip), cqcoth(a,b,&rrp,&rip), cpxvsin(a,b,&rrp,&rip), cpxvsinh(a,b,&rrp,&rip),          ///
///	   ccvsin(a,b,&rrp,&rip), ccvsinh(a,b,&rrp,&rip), chvsin(a,b,&rrp,&rip), chvsinh(a,b,&rrp,&rip),          ///
///      cqvsin(a,b,&rrp,&rip), cqvsinh(a,b,&rrp,&rip), chcvsin(a,b,&rrp,&rip), chcvsinh(a,b,&rrp,&rip),          ///
/// 	cqcvsin(a,b,&rrp,&rip), cqcvsinh(a,b,&rrp,&rip), cpxvcos(a,b,&rrp,&rip), cpxvcosh(a,b,&rrp,&rip),         ///
/// 	ccvcos(a,b,&rrp,&rip), ccvcosh(a,b,&rrp,&rip), chvcos(a,b,&rrp,&rip), chvcosh(a,b,&rrp,&rip),	    	  ///
///	cqvcos(a,b,&rrp,&rip), cqvcosh(a,b,&rrp,&rip),chcvcos(a,b,&rrp,&rip),chcvcosh(a,b,&rrp,&rip),	    	  ///
///cqcvcos(a,b,&rrp,&rip),cqcvcosh(a,b,&rrp,&rip),cesec(a,b,&rrp,&rip),cesech(a,b,&rrp,&rip),cecsc(a,b,&rrp,&rip),///
///	  cecsch(a,b,&rrp,&rip), chesec(a,b,&rrp,&rip), chesech(a,b,&rrp,&rip), checsc(a,b,&rrp,&rip), 		  ///
///checsch(a,b,&rrp,&rip), cqsec(a,b,&rrp,&rip), cqsech(a,b,&rrp,&rip), cqcsc(a,b,&rrp,&rip),cqcsch(a,b,&rrp,&rip)///
///csinc(a,b,&rrp,&rip), csinch(a,b,&rrp,&rip), chsinc(a,b,&rrp,&rip),chsinch(a,b,&rrp,&rip),cqsinc(a,b,&rrp,&rip)///
///	  cqsinch(a,b,&rrp,&rip), ccosc(a,b,&rrp,&rip), ccosch(a,b,&rrp,&rip), chcosc(a,b,&rrp,&rip),		  ///
///	  chcosch(a,b,&rrp,&rip), cqcosc(a,b,&rrp,&rip), cqcosch(a,b,&rrp,&rip), csecc(a,b,&rrp,&rip),		  ///
///		csecch(a,b,&rrp,&rip), chsecc(a,b,&rrp,&rip), chsecch(a,b,&rrp,&rip), cqsecc(a,b,&rrp,&rip),      ///
///	     cqsecch(a,b,&rrp,&rip), ccscc(a,b,&rrp,&rip), ccscch(a,b,&rrp,&rip), chcscc(a,b,&rrp,&rip),    	  ///
///	   chcscch(a,b,&rrp,&rip), cqcscc(a,b,&rrp,&rip),cqcscch(a,b,&rrp,&rip), ctanc(a,b,&rrp,&rip),       	  /// 
///	    ctanch(a,b,&rrp,&rip), chtanc(a,b,&rrp,&rip), chtanch(a,b,&rrp,&rip), cqtanc(a,b,&rrp,&rip),	  ///
///cqtanch(a,b,&rrp,&rip), ccotc(a,b,&rrp,&rip),ccotch(a,b,&rrp,&rip),chcotc(a,b,&rrp,&rip),chcotch(a,b,&rrp,&rip)///
///cqcotc(a,b,&rrp,&rip), cqcotch(a,b,&rrp,&rip),clog(a,b,&rrp,&rip), clogc(a,b,&rrp,&rip), clog10(a,b,&rrp,&rip),///
///clog10c(a,b,&rrp,&rip), clog2(a,b,&rrp,&rip),clog2c(a,b,&rrp,&rip), cexp(a,b,&rrp,&rip), cexpc(a,b,&rrp,&rip), ///
///cexp10(a,b,&rrp,&rip), cexp10c(a,b,&rrp,&rip), cexp2(a,b,&rrp,&rip),cexp2c(a,b,&rrp,&rip),clog1p(a,b,&rrp,&rip)///
///	clog1pc(a,b,&rrp,&rip), clog101p(a,b,&rrp,&rip), clog101pc(a,b,&rrp,&rip), clog21p(a,b,&rrp,&rip),        ///
///   clog21pc(a,b,&rrp,&rip), carg(a,b,&rrp,&rip), cabs(a,b,&rrp,&rip), qabs(a,b,c,d), oabs(a,b,c,d,e,f,g,h),    ///
///       sabs(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p), qadd(a1,b1,c1,d1,a2,b2,c2,d2,&rrp,&rip,&rjp,&rkp),	 	  ///
/// 	qmul(a1,b1,c1,d1,a2,b2,c2,d2,&rrp,&rip,&rjp,&rkp), log101p(a), log101pc(a), log21p(a), log21pc(a).	  ///
///    The upwriten functions perform calculations and store the Results into the ampersanded variables.	  ///
/// Fixed a bug into "cadd" and "cmul" commands, that didn't allow to store the correct result into the rightmost ///
/// variables arguments. Fixed a bug into the Complex and HyperComplex respectively both Addition and 		  ///
/// Multiplication subPrograms, that didn't allow to format correctly the results. Totally rewritten the Domain   ///
/// Checking System related functions and so enhanced precision in all the trigonometric functions. Now even the  ///
/// Basic Calculator have the new Complex Trigonometric, Exponential, Logarithmic and Miscellaneous functions     ///
/// introduced in this version, and the Domain Checking System (D.C.S.) works perfectly also in this Environment! ///
/// Furthermore, it wasn't possible to accorp one complex trigonometric function with its hyperbolic version one  ///
/// 	   one. So, bcilfs.h Basic Calculator HEADER got a bit crowded, but it isn't really a problem. 		  ///
/// Introduced a simple performant OSMM Algorithm for the Square Matrices Multiplication (O.S.M.M. means Optimized///
/// Square Matrices Multiplication) with dimension greater than a constant defined into the settings.xml file     ///
/// (or any valid XML Settings File). Hoever it is possible to change this constant by using its subprogram into  ///
/// "Edit Program SETTINGS" section. This algorithm works also with a BLOCK_SIZE constant that depends on some    ///
/// hardware cache-related specifications. It is also possible to change its value both in XML Settings File and  ///
/// by its inline setting command. Introduced also the Strassen Algorithm for Square Matrices Multiplication      ///
/// with dimension of the form of: 2^n, with n integer. If the "Strassen Optimization" Bool Settings is enabled,  ///
///then the program will use this algorithm instead of the naive classic one whenever the dimension of the actual ///
/// Matrices is greater than a constant defined into the XML Settings File, just as the OSMM Algorithm one. Note  ///
///that if these conditions are true and the dimension of the matrices is greather than the Min OSMM Dimension    ///
/// 	     constant, Strassen has the priority upon OSMM algorithm for square matrices. 			  ///
///					Fixed minor bugs and Code highly optimized.				  ///
///                                     CHANGELOG v6.60 (15/09/2014)                                              ///
/// Introduced new checks into XML functions. Now if during a writing/parsing operation one field of both two XML ///
/// files (settings.xml or colors.xml), is missing, then the program will continue its execution and will show    ///
/// an error message, or eventually, will also set a default value to the interested setting. Fixed a bug into    ///
/// files opening process interface, precisely in Item Selection by Path Modality, that didn't show an error      ///
/// message if the inserted path referred to a non-existent file, or it didn't exit even if you entered the       ///
/// special Exit Char for this mansions ("."). Some outputs has been tightly decorated, though not in an excessive///
/// way. NOTICE: Since this release, the project is completely PORTABLE! It has been compiled under Linux system. ///
///                                     CHANGELOG v6.70 (16/09/2014)                                              ///
/// Replaced the deprecated subprogram "Greatest Eigen Value" of Advanced Calculator section, with the new more   ///
/// performant "Matrix Eigen Values", now placed into Linear Algebra Operations section. This program, as the name///
/// suggests, calculates Eigen Values and Eigen Vectors of a given square matrix. Fixed some minor bugs and C.O.  ///
///                                     CHANGELOG v6.80 (25/09/2014)                                              ///
/// Fixed a bug into the productory(...) ext_math.c function, whose ExprEval inline identifier is "product", which///
/// didn't calculate correctly the result due to a bad initialization of a counter variable. Now this function and///
/// all the functions which was using it, work perfectly. Eliminated the old User Interface related to the Basic  ///
/// Calculator with the Parser Modality disabled. So, reduced the executable size of the 41.5%. Introduced a new  ///
/// 	   statistical function, the "mode", and the code optimized in some critical parts.			  ///
///                                     CHANGELOG v6.85 (04/10/2014)                                              ///
/// Re-written some critical parts of the Lists Items Manager Engine, by using static arrays of functions or vals ///
/// instead of using long cascades of switches. Introduced the CoFactor Matrix subProgram and the related Adjoint ///
/// program, which, as the names suggest, calculate respectively the CoFactor and the Adjount Matrices of a given ///
/// 						  real square matrix.						  ///
///                                     CHANGELOG v7.00 (15/11/2014)                                              ///
/// Introduced the possibility to calculate both the Routh Table and the Jury Table of a n>2 dimensioned RowMatrix///
/// 	 whose elements are the coefficients of the polynom to which you want to apply those Criterions.	  ///
/// 					Fixed some bugs and Code optimized.					  ///
///                                     CHANGELOG v7.10 (16/11/2014)                                              ///
/// Introduced the possibility to evaluate both a Polynom both its Derivative, whose coefficients are stored into ///
/// an n-dimensioned Row Matrix inserted by the User, into a particular value. Now the Jury Table Calcultor tells ///
///        you whether effectively the inserted Polynom satisfty or not the homononymous Criterion.		  ///
///    This is not a Final Built or Official Release, but (UPDATE) probably this could be the last release I write///
///              in C. A future release could be directly mathSMART Mobile Math Environment.                      ///
///                     You can contact me at: marco_chiarelli@yahoo.it or on the secundary mail:                 ///
/// marcochiarelli.nextgenlab@gmail.com in order to report a bug or simply for sending me an advice that could be ///
///                        useful or could improve the speed or optimize my MSCenv System.                        ///
///  --- This is not a Final Built or Official Release, even If the program seems to be efficient and completely  ///
///                  beta-tested. You can contact me at: marco_chiarelli@yahoo.it or on the secundary mail:       ///
/// marcochiarelli.nextgenlab@gmail.com in order to report a bug or simply for sending me an advice that could be ///
///                        useful or could improve the speed or optimize my MSCenv System.                        ///
//!-------------------------------------------------------------------------------------------------------------- ///
///                                    TO-DO in EVENTUAL NEXT VERSIONS                                            ///
/// Predisposed the project to Join a new powerful Calculus System, that processes an operations by dividing it   ///
/// in specified nibbles and processing them singularly by different processes, that will communicate each them   ///
/// by PID signals sending/receiving. The nibbles quantity depends from the number size/overflow error happening  ///
/// probability.                                                                                                  ///
//!-------------------------------------------------------------------------------------------------------------- ///
//!______________________________________________________________________________________________________________ ///
//!-------------------------------------------------------------------------------------------------------------- ///
///                contact me at: marco_chiarelli@yahoo.it or marcochiarelli.nextgenlab@gmail.com                 ///
///        I'll be glad to fix your scripts or simply to take away your doubts about the program                  ///
//!-------------------------------------------------------------------------------------------------------------- ///
//!-------------------------------------------------------------------------------------------------------------- ///
/// Thanks to giggikr: http://forum.html.it/forum/showthread/t-1374455.html for his own function, cambiabase,     ///
///                         which I renamed, modified and adapted to this program. Thanks to:                     ///
/// http://elite.polito.it/files/courses/12BHD/progr/Esercizi-C-v2_01.pdf for some of their scripts.              ///
/// Thanks to Bibek Subedi, for his invertMatrix function, which I renamed, modified and adapted to this program. ///
/// Link Source: http://programming-technique.blogspot.it/2011/09/numerical-methods-inverse-of-nxn-matrix.html    ///
/// Thanks to Paul Bourke:https://www.cs.rochester.edu/u/brown/Crypto/assts/projects/adj.html for his CoFactor fnc///
/// 	   		     which I modified and adapted to this program.					  ///
/// Thanks to W. Cochran  wcochran@vancouver.wsu.edu for his Strassen Algorithm Implementation, which I renamed,  ///
/// adapted and modified to this program. Thanks also to: Computer Science Division | EECS at UC Berkeley for     ///
/// some notions about Matrix Multiplication Optimizations Techniques: www.cs.berkeley.edu/~knight/cs267/hw1.html ///
/// 	Thanks to: http://cap-lore.com/MathPhys/eigen/j.c for the actual _matrixEigenValues function.		  ///
/// Massive thanks to Brian Allen Vanderburg II for his fabulous C parser and inline functions solver, EXPREVAL,  ///
/// which elegantly gave in theory infinite functionalities and potential to my program. That's the project link  ///
/// with Online Documentation: http://expreval.sourceforge.net/ Thanks to: http://www.cprogramming.com/tips/ and  ///
///             http://stackoverflow.com/questions/599365/what-is-your-favorite-c-programming-trick               ///
///                       http://stackoverflow.com/questions/132241/hidden-features-of-c                          ///
///    that are some websites in which I found a lot of useful C tips and tricks, and they were an important      ///
///  checkpoint for resources retrieving in order to speed-up and optimize my program. Still greatly thanks to    ///
///    Bibek Subedi for his website: http://www.programming-techniques.com/ which put in front of my eyes a new   ///
/// world of C programming. I also recently renewed the program code by improving a lot of his C tricks and tips. ///
/// For example, the upper-triangular Matrixes conversion, which was useful to enhance some functions like det(), ///
///      				sgeqsolver ExprEval inline command, etc.	  			  ///
///	  		Greatly thanks to Daniel Veillard for his fabulous XML Parser, LIBXML2.			  ///
///                 Greatly thanks to Daniel Veillard for his fabulous XML Parser, LIBXML2.                       ///
///  Greatly thanks to vict85 of matematicamente.it Network, for having informed me about the benefits of using   ///
///   generally a single reference for the Matrix Type, like LAPACK and the other Numeric Calculus Environments.  ///
/// 		Thanks to Francesco Palma for reporting me some bugs, and finally, massive thanks to my		  ///
/// Informatic Fundaments Teacher, Mario Alessandro Bochicchio, which gave me a lot of C advices and some general ///
///            tricks and tips, that enlarged my professional informatic horizonts. That's all...                 ///
/*!________________________________________________________________________________________________________________*/
//!//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*!////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
Source: readme.txt, updated 2014-11-16