Changelog

July 20, 2011: v1.35

  • Fixed incorrect parsing of hexadecimal input containing “e” followed by digits. GlassCalc would parse “0x4e2” into hex(4e2), then convert “4e2” to “4*10^2”, giving “hex(4*10^2)”, which naturally failed to parse.
  • Fixed incorrect display of based output containing “e” followed by digits. GlassCalc would display “0x4e2” as if the 2 were an exponent.
  • Changed based output to lowercase, since I find it much easier to read.
  • Fixed thousands separator appearing between a negative sign and the following digit. For example, “-100” was displayed as “- 100”.
  • Fixed syntax highlighting for constants. “Ae” is now highlighted as a variable instead of “A” as a variable and “e” as a constant.
  • Added a “Remove User Data” option to the uninstaller.

Feb 4, 2011: v 1.34

  • Added sinc(x) and rect(x)
  • Added phi(x) and invphi(x) (standard normal CDF and inverse)
  • Added nCr(n,r) and nPr(n,r) (combinations and permutations). choose(n,r) is an alias for nCr.
  • The “ans” variable is now relegated to the bottom of the variables list so you can find it more easily.
  • If the side panel is set to automatically size to its contents, the panel’s max width will shrink when the window is small so that the history area will always have at least half the width of the window.
  • If GlassCalc has automatically added “ans” to the start of an expression and you immediately press backspace, the “ans” will be removed too.
  • Fixed syntax highlighting for user-defined constants
  • Fixed declaring functions with 0 arguments
  • Fixed formatting issues for based numbers. Binary and hexadecimal now have four digits between separators. Octal has 3. Other bases have no groups.
  • Long based numbers are no longer put into exponential form.
  • Hexadecimal output works again.
  • Rounding settings are now applied when you click on a number to select it.

Nov 9, 2010: v1.33

  • Fixed aliases matching incorrect functions. i.e. “arctan(” is an alias for  “atan(“, but “barctan(” was incorrectly changed to “batan(“
  • In the default brace highlighting mode (cursor between braces), a brace next to the cursor is now highlighted if it belongs to the outermost pair of braces, even if they do not enclose the cursor. i.e. in “cos(x)|” where “|” is the cursor, the braces are highlighted.

Oct 9, 2010: v 1.32

  • Added fractional output. ex: “0.5->frac” = 1/2
  • Added syntax highlighting for -> operator. If used as base output (as in “100->hex”) it will take the color of based numbers. If used for fractional output, it will take the color of a keyword. Added configurable display precision and set the default precision to 14 decimal places. This will hide some floating point rounding errors such as “22.4-21.5 = 0.899999999999999”
  • Added an option to display all results in scientific notation.
  • Overrode trig functions so that “cos(pi/2)” and “sin(pi)” return 0 instead of very small numbers.
  • If an extensions.ini file is modified while the settings window is up, GlassCalc will now automatically load the changes.
  • Fixed a bug that could cause a crash upon startup if the settings.ini file was manually edited.
  • Single digit exponents are no longer padded with a zero.  i.e. “1e-05” now displays as “1e-5”
  • Fixed saved history forgetting base prefixes/suffixes after closing and restarting the program.
  • Ctrl+R and Ctrl+D now scroll the history to the end.

Sep 20, 2010: v1.31

  • delete command can now delete lists of items at once. Separate them with spaces or commas.
  • Fixed incorrect syntax highlighting for exponential notation with capital E.
  • Fixed “ans” completion not activating when typing first character and input is not focused.
  • Fixed custom multiplication sign when typing * and input is not focused.
  • Fixed a bug with scale factors overriding variable names that include scale factors. For example, with a scale factor “f=100” and a variable “foo=42”, “1foo” was evaluated as “(1*100)oo” instead of “1*foo”.
  • Fixed regression where left panels did not remember their expanded/collapsed state across program restarts.
  • Updated function reference to reflect new usage of the delete command.

Sep 11, 2010: v1.30.2

  • Fixed a crash upon startup when saved history contains a line with a semicolon

Aug 29, 2010: v1.30.1

  • Fixed bug with very large/small scale factors

Aug 26, 2010: v1.30

  • Fixed inverse trig functions (they were broken thanks to blind copy-paste. I’ve implemented unit tests to help keep this from happening again)
  • Non-default multiplication sign gets proper syntax highlighting
  • Syntax highlighting preview now uses correct multiplication sign
  • Non-default multiplication sign will now trigger “ans” autocompletion.
  • sinh and cosh now work with degree angles.
  • factorial now works on negative numbers
  • Added arccos, arcsin, arctan… aliases for acos, asin, atan…
  • Added atan2(y,x). This is actually an alias for atan(y,x).
  • You can no longer define functions with the same name as aliases.
  • Added delete command as another alias for unset and undefine
  • UI fixes. Clicking to the left of a result now selects it. Input box background color is once-again changeable.

Jul 30, 2010: v1.29

  • Added thousands separators
  • Added formatting options for exponential notation. The E now defaults to lowercase.
  • Added option to replace multiplication operator (asterisk) with dot or times operator (x).
  • Fixed and optimized UI a bit
  • Fixed input box flashing transparent when arrowing through first few items of history.
  • History list now scrolls to bottom on startup
  • Up/down arrowing through history now skips over messages without an expression. (degree/radian messages, etc…)
  • Caret position is now saved when arrowing up through history, then back to currently typed expression
  • Removed tooltips from some elements that didn’t need them
  • Changed values in color selectors to lowercase
  • Added color settings for more elements
  • Fixed a syntax highlighting glitch with the solve command and unit conversions in the same expression
  • Numeric textbox inputs in settings no longer accept non-digit characters
  • Minimize/maximize/close buttons are less likely to get stuck highlighted when moving the mouse upwards off of them in the full glass UI. Windows stops asking the window what the mouse is over when it is outside the window, so if the mouse moves directly from the button to outside the window, the window still thinks it’s over the button. I’m not sure how to completely fix this yet.

Jul 25, 2010: v1.28

  • Fixed some annoyances with the installer
  • Fixed minor UI issues (menu text being cut off, input label not transparent in glass UI)
  • Reorganized settings window
  • Fixed a syntax error when a unit conversion is placed in braces by itself like “(in to ft)”.
  • Fixed path to units.exe not getting updated until restart
  • Added “Find Units” button to settings. It searches for units.exe in the default locations for Cygwin and GnuWin32.
  • Added “Install Units” button to settings. It opens the web page where you can download and install Gnu Units.
  • Added units.exe auto-detection. If you type a unit conversion and units.exe is not found, GlassCalc will search for it and automatically configure it if found.
  • Added scale factors. These are suffixes for numbers that scale the number by some factor before any operations take place. These can be set by editing the extensions.ini file. For example, setting “K = 1000” will make “1K” evaluate to 1000.

Jun 21, 2010: v1.27

  • Added an option to switch to a full-glass UI. This may run slowly if you have an older or underpowered graphics card.
  • Minor UI fixes and optimizations
  • OS theme changes are now handled, so switching Aero on and off won’t cause problems. …unless you’re in full glass mode.
  • Fixed freeze when entering a long string of the same character. .NET apparently doesn’t like matching /((?:\d+(?:\.\d+)?|[a-z_]\w*)+)!(?!=)/i on “jjjjjjjjjjjjjjjjjjjjjjjjjjjj”. Go figure.
  • Fixed a bug where checking for updates did nothing an update notification was already shown.
  • Improved handling of fatal errors
  • Fixed an overflow error with base conversions
  • Added “x” as a shortcut for output in hexadecimal. (ex: “800->x” = 0x320)
  • Added int() and truncate() functions (aliases for ipart())

May 28, 2010: v1.26

  • Added gcm() and lcm() functions (greatest common divisor and least common multiple)
  • Fixed syntax highlighting not coloring multiple unit conversions after the first one… mostly. If you have unit conversions enabled and you use a colon to end a solve command, (i.e. solve x: x = 1) this will be highlighted as a unit conversion. The only way to solve this is to use an impossibly complicated regular expression, and I can’t image what it would do to the performance to evaluate it every time you press a key.

May 20, 2010: v1.25

  • Fixed a crash when clicking “Check for updates” while GlassCalc was already checking for updates.
  • Added support for additional constants. These should be defined in the extensions.ini file under a section named “Constants”. There can be a global extensions.ini in the program directory and a user extensions.ini can in the AppData directory.
  • Added an “Extensions” page to More Settings to facilitate editing the extensions.ini files.

May 11, 2010: v1.24.3

  • Fixed a bug with unit conversions inside function calls and solve commands
  • Unit conversions inside solve commands now have proper syntax highlighting
  • Removed the libraries that aren’t changing between releases from the upgrade installer.

May 10, 2010: v1.24.2

  • Fixed a bug where the radians/degrees mode was not properly initialized on startup. (Thank you anonymous bug reporter!)

May 6, 2010: v1.24

  • Added support for unit conversions using the GNU Units application. See Installing Units for more information.
  • Since Units cannot convert between temperatures by itself, I added custom support for conversions between Fahrenheit, Celsius, and Kelvin. You should be able to do temperature conversions without Units installed. The abbreviations tempF, tempC, and tempK can be used instead of Fahrenheit, Celsius, and Kelvin.
  • Added an option to automatically resize the left pane to fit its contents. This is on by default.
  • Added an option to hide the left pane when the window is horizontaly small. This is also on by default.
  • Fixed syntax highlighter to color functions when there are spaces between the function name and the opening parenthesis.
  • Changed all the “hide” options to “show” options, because it makes more sense that way.
  • Added an option to change the background color of the application.
  • Added a “reset to default” option for color selectors. Right click the selector or left click the colored box, then click “Reset to Default”.

Apr 18, 2010: v1.23

  • Fixed a crash when unhiding the function reference
  • Updated all the libraries used to run on .NET 4.0. This should (hopefully) improve startup performance a bit.
  • Updated installers to install .NET 4.0 if not present. (upgrade installer does not include .NET installer. It links you to the .NET download page instead)
  • Changed the way the parser engine initializes, shaving about another second off the startup time.
  • Moved the functions, variables, and history storage out of the .NET config system and into an ini file in the AppData directory, greatly improving startup performance. You will lose all saved functions, variables, and history when upgrading to this version though.
  • General performance and memory usage improvements.
  • Added “clear all” command
  • Added the factorial operator. ie: (n+1)! = fact(n+1)
  • Rewrote the factorial algorithm so it works on numbers larger than 14. I’m still not quite sure why the factorial function built into MTParser wasn’t using floating point numbers for this.
  • Fixed a bug in the updater that caused the program to read update info for the wrong program.

Mar 7, 2010: v1.22

  • Added ++ — += -= *= /= ^= and %= operators
  • Improved the solve algorithm to work a bit better for large numbers.
  • Fixed the syntax highlighter so that the “e” and exponent in exponential notation are no longer colored as a variable or constant.
  • Fixed a bug where exponential notation would not follow correct order of operations in some cases. “1e2 / 3e4” was evaluated as “1*(10^2) / 3*(10^4)” instead of “(1*(10^2)) / (3*(10^4))”.
  • Results are no longer rounded to 15 decimal places.
  • Fixed a bug that kept the input textbox from scrolling to fit its contents.
  • Fixed a error when defining a function if the function reference pane was hidden since the program started.

Mar 3, 2010: v1.21

  • If you end an expression with the output operator (“->”) with no base, decimal will be assumed.
  • You can now evaluate multiple expressions at once by separating them with semicolons. Only the result of the last expression will be displayed. “x = x+1; x^2” will add 1 to x, then display the result of “x^2”. You can force a result to be shown by finishing an expression with “->”.
  • General startup performance improvements
  • Loading user functions, variables, and history on startup no longer causes the program to freeze up as much. If the reference pane is hidden, the function reference will not be loaded until it is unhidden.
  • Manually checking for updates no longer causes the program to freeze until checking finishes.
  • Added an indicator to show when the program is checking for updates
  • Added syntax highlighting for constants
  • Tooltip hints for the function reference items no longer disappear

Feb 15, 2010: v1.20

  • GlassCalc now runs on .NET 4.0
  • Added support for syntax highlighting and brace matching. These can be configured in the “More Settings” menu.
  • Added “Help->Report a Bug”
  • Added an indicator to show whether you are in degrees or radians mode.
  • Improved the parser so that expressions like “sin(x)cos(y)” get evaluated as “sin(x) * cos(x)”. In general, a closing parenthesis followed by either an opening parenthesis, a number, or letter is read as the product of two things.
  • Improved the parser to allow spaces between coefficients and variables. Now “42 x” is evaluated as “42*x”.
  • Revamped the “More Settings” menu to add tabs and the same transparency effect the main window has at the top.
  • Added settings to change the interface color scheme.
  • Added “clear” function, which clears all user functions, variables, or the history pane.

Jan 29, 2010: v1.15

  • Fixed a bug where the Ctrl+D/Ctrl+R shortcuts to change between radian and degree modes printed the same message twice instead of only once.
  • Added options to display hex, octal, and binary numbers in the history with “0x”, “0o”, and “0b” prefixes. If unchecked, they will display with the default “base-#” suffix. For clarity, negative numbers will always use the “base-#” suffix.
  • Updated all references to my website to my new site.

Jan 24, 2010: v1.14

  • Fixed a bug that made it impossible to convert negative numbers to other bases.
  • Clicking on the history result of a base conversion will now automatically select only the numerical portion of the text. Double click to select the whole text box.
  • Starting an expression with the conversion operator (->) will automatically add “ans” at the beginning if the corresponding setting is on.

Jan 15, 2010: v.1.13

  • The amount of time between automatic update checks can now be changed. Previously, GlassCalc checked every time it was run.
  • The autoupdate routine has a list of places to check for update info. I’m planning on moving my website to a new domain, so now the updater should be able to find its update info once I make the transition.

Jan 3, 2010: v.1.12

  • GlassCalc now has (almost) full localization support. This means it can be translated (not that it has been translated). If you would like to help translate GlassCalc into other languages, send me an email and I’ll give you the files you need.
  • GlassCalc now loads the function reference from “functions.xml”. It will look for localized versions as well, which will override the default English reference.
  • GlassCalc would load another XML file that would make localization of parser errors possible, but the cryptic error I’m getting from the parser isn’t much help and the author of said parser has yet to respond.
  • Did a lot of code optimization and stuff. Localization means more file IO on startup, so it might still start up a little slower.

Dec 31, 2009: v1.11

  • You can now input numbers in any base from 2 to 36. The functions, base2() through base36() take a number in the given base and convert it to decimal. This also means you can’t define functions named base2() through base36() anymore.
  • Added 0o shortcut notation for octal strings similar to the 0x and 0b shortcuts for hexadecimal and binary.
  • You can now output numbers in any base from 2 to 36 by putting “->” followed by a base number at the end of an expression.
  • Added a Options->More Settings menu that holds, well, more settings.
  • GlassCalc can now be configured to automatically check for updates when it is run. Use More Settings menu to turn this on/off.
  • Help->Check for Updates can now download and install updates for you. This doesn’t use any sort of secure transfer, since I can’t really set that up with my web host, so use this at your own risk. GlassCalc will check the MD5 of the downloaded file, so it won’t run a corrupted or tampered-with installer.
  • Added an option (also in More Settings) to have GlassCalc remember the calculations history when it is closed and started again. You can also choose the number of items to save so that the history list doesn’t get too long.
  • Changed default behavior of the text box so that when it is set to automatically add “ans” to the beginning of an expression, this doesn’t happen when start an expression with a minus sign (-). It was really annoying when you wanted to start an expression with a negative number and GlassCalc kept sticking “ans” at the beginning. There’s an option in More Settings to turn this back on if you liked it that way.
  • Improved the parser a bit to make it more flexible. For instance, now you can use almost any expression as the guess to a “solve” command and use the binary/octal/hex shortcuts in parts of an expression you couldn’t before.
  • GlassCalc should now update your settings files instead of overwriting them.
  • Removed the “help” item from the function reference, since I removed the help command a while ago.

Dec 20, 2009: v1.10

  • Added Functions:
    derivate() derivative (alias of nderiv)
    exp() e raised to a power
    fnint() integral by trapezoid rule
    fpart() fractional part
    isInfinity() is number +/- Infinity?
    ipart() integer part
    nderiv() numeric derivative
    pow() power
    sign() is number positive, negative, or 0?
    trapezoid() integral (alias of fnint)
    Note: nderiv and fnint are not very accurate approximations
  • Added a constant for Infinity
  • root() function now works correctly for negative numbers with odd roots
  • Added a “Quick Reference” item in the help menu. This opens a file with quick examples of commands and shortcuts.
  • Added a “Check for Updates” item in the help menu. This will check whether there is a newer version of GlassCalc and tell you where to download it.
  • Fixed some placement issues with messageboxes and the about screen.
  • Tweaked the width of the definitions view so that when you make the window bigger, it starts expanding sooner.
  • The installer now has an option to set whether a native image is installed or not. Generally, .NET applications can be made to start up faster by installing a native image, but under certain circumstances, this may actually increase startup times. If GlassCalc seems to start up slower than before, try uninstalling and reinstalling with “Generate Native Image” unchecked.
  • Fixed a bug in the installer that created an empty “GlassCalc” folder in the start menu.

Dec 16, 2009: v1.01

  • Fixed a problem where the window did not remember its size on startup
  • Made some minor interface tweaks
  • The installer now installs a native image of GlassCalc make startups faster

Nov 24, 2009: v1.00

  • Stuff works now! No more crashing upon loading! _MTParserPlugin.tlb was not being registered, which caused the program to crash upon loading unless you happened to be using my computer. In that case, Visual Studio would have already registered the file without telling you that it needed to be registered on every other computer you install your program on. :(
  • Installer automatically runs ngen to improve performance
  • The program no longer tries to load dwmapi.dll on XP. dwmapi.dll does not exist on XP.

Oct 29, 2009: v0.93

  • Improved startup performance. Some info is now loaded in the background so you can start doing stuff before everything is loaded.
  • Functions and variables are now sorted alphabetically
  • Added a function reference entry for the “if” function

Oct 24, 2009: v0.92

  • Minor interface fixes.
  • Rewrote some stuff so it doesn’t depend on JScript. This should improve startup performance as a whole bunch of assemblies don’t need to be loaded anymore.
  • If you type stuff and the Input box isn’t focused, it will be focused for you. Also happens with the Up/Down arrows.
  • Removed “click history item to copy to input box” “feature”.
  • Text in expressions can now be copied.
  • Added Alt shortcuts for menu items.

Oct 21, 2009: v0.91

  • Added keyboard shortcuts for degree/radian mode.
  • Program now remembers degree/radian settings.
  • Fixed some tooltips that were in the wrong places.
  • Text in constants/functions/variables can now be copied.

Oct 15, 2009: v0.90

  • First release!