Graphmatica Bug reports
If you're seeing behavior you think is a bug, please check the known bugs below (and download the
fix if applicable) before you email me.
Known bugs
-
Bug 109: abs(x+y+1)<=7 shades incorrectly
Symptom: Solution region is not being closed correctly; shading goes out of bounds.
Cause: Inequalities involving absolute values have tricky discontinuous regions not
obvious from the base equation.
Workaround: None.
Status: Not worked on yet.
-
Bug 104: Curve-fit inaccurate if includes point with x=0
Symptom: Attempted linear fit for data set including 0,4 resulted in premature covergence at an incorrect solution.
Cause: It appears that the value x=0 somehow resulted in incorrect partial differential computation. CurveExpert does not seem susceptible to this because it has a special case algorithm for linear/polynomial regression (not Levenberg-Marquardt).
Workaround: Leaving out the x=0 value or substituting a nearly-zero number works fine.
Status: Not worked on yet.
-
Bug 102: Cannot graph x^3 + y^3 = a * x * y {a: 1, 7, 1}
Symptom: This equation won't parse due to use of 'a' in implicit function.
Cause: Can't use the free variable 'a' in implicit functions due to limitations for calculating/storing initial values, lack of loop to advance value of 'a' around the ODE approximation graphing routine.
Workaround: enter separate equations for all desired values of "a" manually
Status: Not worked on yet.
-
Bug 100: sin(x) < sin(y) shading incorrect at domain -60,60
Symptom: upper half of graph should be shaded, but lower corner tests positive at large enough scale resulting in odd diagonal artifact
Cause: sin(y) is evaluated by taking arcsin of both sides. The domain of this function is limited and behavior outside of that domain is unpredictable.
Workaround: None
Status: Not worked on yet.
-
Bug 97: Incorrect vertical segments drawn for high-frequency sec/csc curves
Symptom: High-frequency sections of sec/csc graphs like Y= sec (1+1/x) and Y= csc (1-1/x^2) can inappropriately connect points below -1 and above 1 so that it looks like the graph is defined there, although this is physically impossible.
Cause: To speed up drawing, Graphmatica calculates points only every 2-3 pixels and "connects the dots" with line segments. Although there are numerous checks to prevent discontinuous segments of the graph from being connected, they seem to be inadequate to catch this case.
Workaround: draw graph with points only at high enough fineness factor that the points blend together, without the program drawing lines between them.
Status: Not worked on yet.
-
Bug 96: "Bad variable" displayed, vertical segments missed on implicit graphs
Symptom: y^7-y^5=(cot x)^7-(sin x)^3 displays the message "Your equation included a variable or function that Graphmatica does not support, or you mis-typed a function name. Please edit your equation and try again.") and skips near-vertical segments
Cause: The ODE approximation inputs are overflowing and this triggers the check for undefined variables. Presumably the approximation has completely lost precision at this point, so it should trigger an evaluation warning, but not a parse error.
Workaround: Avoid drawing segments of graphs that are too close to vertical.
Status: Irrelevant "Bad variable" error fixed. Still working on finding proper set of initial values to draw the entire curve for this graph.
-
Bug 90: abs(x-y)>x shades incorrectly
Symptom: Misses two corners, so shading crosses graph instead of staying within the bounds.
Cause: Unknown.
Workaround: None.
Status: Not worked on yet.
-
Bug 89: derviatives of trig functions in degrees mode multiplied by unwanted 'd'
Symptom: When a trig function is written in degrees: y = sin (x * d)
,
and then you take the derivative, the solution is incorrect: y' = cos (x * d ) * d
instead of y' = cos (x * d)
Cause: Graphmatica performs the chain rule as it would on any argument to a function, although it is inappropriate here because the conversion factor from degrees to radians should be treated as part of the trig function, not the argument
Workaround: Use radians
Status: Not worked on yet, but a comprehensive "degrees mode" is on the drawing board for the next version.
Fixed bugs
-
Bug 116: Crash when graphing 1/|x|
Symptom: Program crashes during graph of equations with absolute value (or other nondifferentiable fuction) in the denominator
Cause: The hole drawing algorithm added in version 2.0i was not checking for cases where the derivative of the
denominator (needed to solve for zeros to locate the potential holes) is not computable.
Workaround: none
Status: Fixed for version 2.2.
-
Bug 115: Potential crash when deleting piecewise-defined equation
Symptom: Program may crash when deleting a piecewise-defined equation. More reproducible on OS X than Windows.
Cause: The code for graphing piecewise-defined equations could leave the second and following segments of the equation
pointing to the temporary pointlist structure used during graphing. Attempting to free this memory again when deleting
the equation could crash the program immediately or lead to memory corruption.
Workaround: Edit .gr file by hand (e.g. in Notepad) to remove unwanted equations and then reload.
Status: Fixed for version 2.2.
-
Bug 114: abs(2-3x)>1 shades wrong region
Symptom:abs(2-3x)<1 and abs(2-3x)>1 shade the same region. The > graph is incorrect.
Cause: The inequality evaluation for double graphs depends on the "top half" of the graph coming first in the point list. For graphs that were doubled due to the inverse of abs becoming positive or negatiive,the bottom part of the curve was being drawn first.
Workaround: none
Status: Fixed for version 2.0i. Flipped the order of drawing the two halves of the curve by doing a quick test evaluation made the inequality evaluate correctly again.
-
E/R 99: Handle equations like f(x)=...x...
Request: Want to be able to enter equations using f(x)= instead of y=
Issue: The equation parser treats expressions like f(x) as a function call with x as the parameter. Would have to make this a reserved expression to enable this behavior.
Status: Feature added for version 2.0i.
-
Bug 68: Graph of x=abs(y^2) incomplete
Symptom: Only top half of curve drawn.
Cause: The parser favors solving for y instead of x. It should favor solving for x if there is one instance of each variable and solving for y requires inverting the abs function.
Workaround: You can force the program to evaluate an equation with only one "x" as a function of y by appending "+ y - y" to it. This makes it impossible to isolate y, but does not
change the solution of the equation.
Status: Fixed for version 2.0i.
-
Bug 113: Curve fit equations should use at least 4 sig figs for coefficients
Symptom: Logisitic curve fit for some data sets was much worse than actually calculated
in some cases because the coefficients were rounded prior to formatting the equation.
Cause: Inadequate precision specified to number formatting code.
Workaround: none
Status: Fixed for version 2.0h. The precision is now linked to the point tables number of decimal places.
-
Bug 112: Paste data plot with large (6 digit) numbers displays imprecise "*10^x" values
Symptom: Paste data plot with
1 123456
shows as 1.23*10^5
Cause: Inadequate precision specified to number formatting code.
Workaround: none
Status: Fixed for version 2.0h
-
Bug 110: incorrect domain used for unwrapped sqrt
Symptom: abs(x)-1=sqrt(1-(y-1)^2) incorrectly graphs region -1 < x < 1. This should be a domain error on the unwrapped sqrt since (abs(x)-1) < 0 in this region.
(see abs(y)-1=sqrt(1-(x-1)^2) )
Cause: There was a corner case in the code that determines whether a function is odd or even which was making the wrong choice in this case.
Workaround: Force graphing as function of y: abs(x)-1=sqrt(1-(y-1)^2)+y-y
Status: Fixed for version 2.0h
-
Bug 108: y=2^x*ln 2 simplified improperly to 0
Symptom: Graph y=2^x and use the Calculus/Find Derivative menu.
The derivative is incorrectly displayed as y=0.
Cause: A typo in new code to simplify 0^??? to 0 was incorrectly simplifying the expression when the base was any constant, not just 0.
Workaround: None
Status: Fixed in 1/10 refresh of version 2.0g (2.0.7.7).
-
Bug 106: implicit curves with multiple values display incorrectly in point eval
Symptom: Graph x^3 + y^3 = 6xy and bring up the point evaluate dialog box.
Each real result in the dialog is preceeded by a copy of the prior contents of the temporary buffer.
Cause: Inadvertently left out a call to display the first result of a 2-value
point evaluate computation. Fixed this to iterate over all initial values for the ODE
approximation, and display up to 5 distinct y values for the given x value.
Workaround: None
Status: Fixed in version 2.0g.
-
Bug 105: Inaccurate tangent lines in tight-radius implicit curves
Symptom: For the equation x^3 + y^3 = 6xy displayed at default grid range, the
program computes the tangent line function as y=-0.75x + 5.25, while the real solution is y= -x+6
Cause: When Graphmatica is unable to compute the derivative for an equation,
it instead approximates the slope at a point based on the slope between the two closest
calculated points on the screen. This has a pretty huge error potential when the curve's
radius is tight enough (this one does a 180 near that point).
For implicit functions, however, we have already computed the derivative, so we should be
using the exact method instead.
Workaround: Zoom in really close up on the point where you want to calculate the
tangent line prior to calculating the slope.
Status: Fixed in version 2.0g.
-
Bug 103: Crash on startup on Wine due to bad TB_ADDBUTTON message
Symptom: Program crashes on startup running on Linux under WINE. This is because it
was passings a negative iString (0xffff0028) in the TB_ADDBUTTON message
Cause: Windows ignores invalid string parameters to these messages. WINE does not check before referencing them.
Workaround: Only affects attempts to use the program on Linux
Status: Fixed in version 2.0g.
-
E/R 101: Increase maximum allowed decimal places to 14
Request: ability to display more than 8 decimal places for point tables, integrals
Issues: Maximum double precision in C runtime library is 16 digits, but at
more than 14 digits displayed artifacts like 0 displaying as 0.000000000000001 start appearing.
Increased limit to 14.
Workaround: None.
Status: Feature added for version 2.0g.
-
E/R 98: Want ability to display tick marks without numbers along axis
Request: Would like to see the tick marks but no numbers along the axes.
Solution: Added tickmarksonly=on option to .gr file format to enable this behavior.
Status: Feature added for version 2.0f.
-
Bug 95: scanner goes into infinite loop with y=½x
Symptom: y=½x goes into a cpu spin instead of reporting an error due to the invalid symbol.
Cause: The Microsoft C runtime library reported that this character was a number, but it could not be procesed like one.
Workaround: don't try to use the ½ symbol
Status: Fixed in verion 2.0f
-
Bug 94: Copy graphs toolbar button defaults to WMF instead of EMF
Symptom: Using Copy graphs toolbar button before making any Copy Graphs xxx selections from the Edit menu selections copies as WMF, leading to text-handling defects, etc. that are known deficiencies of this format. The default copy graphs format should be EMF.
Cause: Copy graphs WMF was removed from version 2.0 of the product due to known issues with the quality of the copied image that are basically unavoidable. Although I neglected to change the default value for this setting, since the WMF code was disabled, EMF was the effective default. When WMF support was added back per special request from a customer in version 2.0e, it became the default again.
Workaround: Use the Edit/Copy Graphs EMF/Color or Monochrome menu item at least
once before using the Copy Graphs toolbar button.
Status: Fixed for version 2.0f
-
E/R 93: Changing Theta Range should refresh all affected graphs
Request: Changing the range of theta does not redraw polar graphs with the correct domain.
Cause: This is by design--changing the range only affects graphs calculated after the new range is entered.
Workaround: To force a recalculation of existing graphs, zoom in/out or change the window size slightly.
Status: Feature added for version 2.0f.
-
Bug 92: Crash when graphing equation with free variables and no points on screen
Symptom: For example, with the default grid, x=2*pi*6378.1*277/4356*a-2*pi*6378.1*floor(277/4356*a) {a:1,10,1}
makes Graphmatica crash.
Cause: There are no points visible in the above graph (solution for a=1 is larger than 8). The point list is not being initialized properly in this case which causes a crash in th
code that displays the equation under the mouse cursor later.
Workaround: Ensure correct domain prior to entering graph.
Status: Fixed for version 2.0f.
-
Bug 91: CPU spin handling "," operator when decimal separator is ","
Symptom: If in the demo CornuSpiral.gr, you change the b-assignment in the first equation from {b: 5} to the erroneous {b: 5, 8}, you'll not get an error message, but instead the program will start calculating and lock. This is a new bug in version 2.0d.
Cause: The equation parser was changed to accept numbers starting with either
decimal separator (. or ,) but was incorrectly assuming a digit always followed and got stuck
in a loop if some other character was encountered instead.
Workaround: Use "." as the decimal separator.
Status: Fixed for version 2.0f.
Older bugs
See the bug archives page for issues resolved in version 2.0e or earlier.
kSoft, Inc. ksoft@graphmatica.com
Last updated: Fri 28 Sep 2012