Inequality Solver Version History --------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------- 4.2.1 -Better handling of trigonometric expressions when the constraint expression evaluates to true -Fixed a bug where incorrect answers were returned if a constraint expression was used with a periodic function that had a period less than 1. -All values in the constraint expression are now treated as critical points and are used in the range evaluations to improve accuracy -Minor speed and size improvements -Compiled size currently 3965 bytes 4.2 -Recompiled with TIGCC 0.96 beta 8 -Constraint expressions (using the with operator: "|") can now be used to limit the range of values returned. Note: this requires the installation of either IPR by Cyril Pascal, available at http://sirryl.multimania.com, or a shell like DoorsOS, Universal OS, PreOS, or KerNO since AMS 2.xx forbids the use of ASM programs in expressions. Example: isolve(sin(x)>0,x)|x<10 and x>0 returns x<3*pi and x>2*pi or x0 -Compiled size currently 3873 bytes --------------------------------------------------------------------------------------------- 4.1.1 -Recompiled with TIGCC 0.96 beta 6 -Fixed a bug where the bounds of a trig equation were incorrectly checked for equality if they weren't also critical points -Fixed a bug where the bounds weren't checked for equality if the original expression didn't include equality symbol (equal-to, not-equal-to, greater-than-or-equal-to, less-than-or-equal-to) -Compiled size currently 3443 bytes 4.10 -Recompiled with TIGCC 0.96 beta 3 (using GCC 4.0) -Better handling of memory errors -Better implementation of memory deallocation when errors are thrown -Warning message now displayed when range is limited to [0,2*pi] (or [0,360°]) -More efficient sorting algorithm for the most common situation -Continued speed and size optimizations -Compiled size currently 3383 bytes --------------------------------------------------------------------------------------------- 4.00 -Completely rewritten again in C using TIGCC using the normal RPN expression syntax, thus eliminating tedious conversions and greatly speeding up the program -Average speed increase over TI-Basic version is 50% -Multiple expressions can now be handled correctly -Many optimizations to both increase speed and decrease size -Compiled size 3663 bytes --------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------- 3.00 -Internal release -Code completely rewritten in C using TIGCC -Having little understanding of the TI operating system, all expression manipulation required converting from the TI expression format into a C-string, then back to an expression -Expressions that can't be simplified correctly and were previously displayed as strings are now displayed as unsimplified expressions -Completely internationalized -Small speed gain over the TI-basic version of the function, greater gain with small equations, typically 30%, but can be around 5% with more complex equations -Cannot evaluate multiple expressions -Compiled size currently 4539 bytes (way to high) --------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------- 2.10 -Changed some of the coding so that the program would now work in languages other than English (thanks to Felix for pointing this out) -Fixed the checking code so that answers would only be displayed as a string when in AMS 2.08 and up, since answers are correctly simplified in AMS 2.05 -Compiled size currently 3976 bytes 2.00 -After redesigning the code, the major improvement of the program is that it is now compatible with approximations. This came at the sacrifice of speed and size, but the only noticeable speed difference will come with complicated equations and I don't really care about the size anymore, as long as it's optimized (which it currently is). -With the above change, I fixed the problem with trig equations in AMS 2.08 that would previously return only some of the answers. All of the answers should now be returned. -Changed the order in which negative answers are included for trig equations in AMS 2.05 (mentioned in version 1.33) so that it runs faster -Added code so that it will return approximated answers if solving for exact ones does not give all of the correct solutions -Compiled size currently 3734 bytes --------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------- 1.34 -I was informed that certain trig functions did not return all the correct answers (thanks to Martin for finding it) and through this I discovered that AMS 2.05 won't return all the solutions for equations such as 2*(1-cos(2x))=3*sin(2x) unless it was finding approximate solutions. However, when placing approximate irrational numbers back into the equation the calculator will not acknowledge these as correct solutions. Therefore I was forced to accept this bug in the AMS and only use the exact answers that it gives. -Added code for answers that are recognized as valid solutions only when they are approximated -Added warning in README about the problems with approximating irrational numbers -Compiled size currently 3000 bytes 1.33 -Since 2.08 can't simplify inequalities with square roots or fractional exponents, I recently downgraded to AMS 2.05 and discovered that this operating system handles the solving of trig functions with a given range very differently from 2.08. For some reason, 2.05 won't return negative answers even if they are correct and within the range -Added code to help fix this problem in AMS 2.05 while still allowing it to fix the problems AMS 2.08 has with extraneous information (unfortunately, entirely different problems) -Added a disclaimer to the README about the different operating systems and added a "Notes" section to help move stuff away from the top -Current compiled size: 2895 bytes 1.32 -Small update, realized I screwed up and approximated a value that I shouldn't have -Added a little more code so that the testing for incorrect simplification works better on any AMS other than 2.08 -Compiled size currently 2855 bytes 1.31 -I actually took the time to test this version before submitting it, so there's many bug fixes over the last version; I'm not sure if I can remember them all to include them here: -Corrected the solving of trig functions with absolute values -Corrected the code so it uses the innermost trig expression in situations such as sin(sin(x))>0, I don't think it can actually solve this (mainly because the calculator has problems solving it), but it no longer returns wrong answers -Adjusted for when the answer includes an arbitrary integer condition when it isn't necessary (such as "x=pi and @n1>=0") -Allowed for better handling of answers that include exponents or square roots; very optimized; I discovered that the simplification errors for these answers only occurred in AMS 2.08; all previous operating systems do not have the problem, or at least not to that extent -Changed the code for better error catching of equations that did not contain the specified variable and I reworded the error message to make it more clear -Decided that itsolve should be uploaded as a separate program; now titled "Trigonometric Equation and Inequality Solver", and renamed tsolve; it should be included in the same directories of the ticalc.org archives as this program -Compiled size currently 2849 bytes 1.3 -Trig equations now limit the value inside of the trig function to [0,2*pi] or [0,360°] (rather than limiting the variable to this range), this should solve many problems with trig functions, making this part of the program much closer to working accurately in most cases -Unfortunately the addition of the above code added 500 bytes to the program and pushed the compiled size over 3000 bytes once again (3178 on my calc), but this solves the last major problem that I feel is fixable with the program, so I guess it's worth it --------------------------------------------------------------------------------------------- 1.24 -Actually released after 1.3, mainly since I didn't like the size of the newer versions and I wanted people to have an option -Optimized more than versions previous to 1.31, but it still limits the variable of trig functions to [0,2*pi] or [0,360°] -Better handling of functions that the calc can't display correctly, namely answers that include a square root or exponent; very optimized 1.23 -Corrected the main program so that "x<=2*pi and x>=0" now yields true (increasing the compiled size to 2610 bytes) -Changed itsolve so that the output would be between the minimum and maximum (similar to the range problem that was corrected in the previous update) -Added an error message to itsolve to catch improper ranges (if minimum > maximum) -Reduced compiled size of itsolve to 2266 -Changed the code for itsolve to reflect the new optimization 1.22 -Realized the range for trig functions wasn't quite [0,2*pi] or [0,360°] (some inequalities would yield things like "x>3*pi/2 or x3*pi/2 or x=0" -The above change dropped the compiled size to 2517 bytes -Added more to the note about trig functions in the README 1.21 -Fixed a bug that limited inverse trig functions to the range [0,2*pi] ([0,360°]) -Further optimized the code (specifically in the testing section), compiled size down to 2526 bytes -In equations with trig expressions (in isolve and itsolve), I sacrificed the ability to display either "x=0" or "x=2*pi", but not both, in order to make the function smaller (now will display both "x=0" and "x=2*pi" even though they are the same) 1.2 -I got feedback from one user at this point, so I plan to continue working on the program, but I don't really know what to do with it; if anyone has any suggestions or comments about something to add, they would be greatly appreciated -Discovered and fixed a problem where the solving of multiple equations would get stuck in a loop -Fixed a bug that caused an error to be reported when the answer contained an absolute value that was greater than a negative number (such as abs(x)>-1) -MAJOR reorganization and optimization of the code, probably making it nearly impossible for anyone to follow what it's doing (reusing variables makes things very confusing) -Finally dropped the compiled size below 3,000 bytes (2816 on my calc) -Haven't changed itsolve for the newly optimized code, still debating as to whether or not I'm going to --------------------------------------------------------------------------------------------- 1.12 -Discovered and corrected problem in the code for trig functions that screwed up answers involving zero, -Considerable optimization dropping compiled size from 3446 to 3193, I still want to get it below 3000 but that'll be for another update 1.11 -Discovered and corrected a problem with equations with two variables that results in a single answer, it can now display them without errors 1.1 -Realized that trig functions wouldn't work and tried to fix it, trig variables now limited to one complete circle -I removed the optional string solution program because I think it's pointless (e-mail me if you still want it) --------------------------------------------------------------------------------------------- 1.02 -Slight optimization, dropping compiled size from 3116 bytes to 3042 1.01 -Attempted to fix the false solutions that occurred when the solution set contained a square root or fractional exponent; caused by the calculator's stupid methods of simplifying things and it now returns those solutions as strings 1.0 -ticalc.org release (after nearly all of the above versions were updated while still in queue), -fixed a bug with undefined values in multiple equations -optimized multiple equation solving -added error recognition for equations with multiple variables -fixed it so that one over the absolute value of zero (1/abs(0)) is undefined (the calculator reduces it to infinity) -rearranged code to reduce size --------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------- 0.9 - Corrected an error for equations containing the not-equal-to sign 0.8 - Corrected an error with solving equations that have real results as inequalities but imaginary results as equalities (presented a problem since the equality was used in the solving process) 0.7 - FINALLY ACHIEVED COMPLETE SOLVING OF ALL MULTIPLE EQUATIONS!!! 0.6 - Added support for multiple equations joined exclusively by "and" or exclusively by "or" 0.5 - Added more error recognition and correct some of the existing ones 0.4 - Added simplification of multiple equations but still cannot solve them 0.3 - Optimized code, faster sorting algorithm 0.2 - Answers now returned as expressions rather than strings which allows the calculator to simplify it, making things SO much faster and easier 0.1 - First release, can only solve a single equation