From GameBrew

AuthorMorgan Robertson
Last Updated2009/01/28

graphDS is a graphing calculator application designed for the Nintendo DS. The program is capable of evaluating mathematical expressions and built-in functions as well as simultaneously graphing up to four Cartesian,inverse, parametric, or polar functions.

graphDS v0.8b was submitted to the NEO Summer Coding Compo 2008 and ranked 9th.


  • Evaluates mathematical expressions... including those with exponents, trig, and logarithmic functions.
  • Includes a CAS to simplify algebraic expressions, including foiling.
  • Graphs regular, inverse, parametric, and polar equations, as well as slope fields and Euler's method.
  • Catalog with many different functions.
  • Evaluates numerical derivatives and integrals, as well as Riemann sums.

User guide


On the homescreen, you can evaluate expressions, approximate definite integrals, or use a number of built-in functions. After entering an expression, press the "ENT" key or A to evaluate it.

Note that you must use proper syntax or you will risk getting an incorrect result.

This includes using closing parentheses and multiplication signs (* ) where necessary.

Currently, trig functions along with addition/subtraction, multiplication/division, and exponents and special built-in functions can be evaluated.


With graphDS, you can graph up to four functions simultaneously.

From the homescreen, tap the "GPH" key on the touchscreen. Using the keyboard, enter a function. Press "CLR" to erase a function and use the D-Pad to move the cursor.

When you are finished entering functions, press the "ENT" key, then press "GPH" again to graph the functions.

To switch graphing modes, press the "Mode" key. To adjust the graphing window, press "WIN".

You can then adjust the xMin, xMax, yMin, yMax, and parametric and polar graphing parameters (depending on what graph mode you are in).

When finished editing the window information, press "GPH" to return to the function input.


After you have graphed a function, you can trace it to see the numerical relationship between x, y, and t or theta values (if applicable).

From the graphscreen, press the "TRC" key on the touchscreen to begin tracing. On the top screen, a red cursor will be displayed.

To move the cursor, press the left and right buttons on the D-Pad. On the touchscreen, the values of relevant variables will be displayed.

To set a specific value for x, t, or theta (depending on the graph mode), touch the touchscreen with the stylus and input a valid numerical expression.

After you press "ENT" or the A button, the cursor will jump to the proper point on the function.

You can also access a limited number of catalog functions while inputting a tracing expression by touching the "CLG" key on the touchscreen.

Built-in functions

graphDS features a number of built-in functions, which are accessible through the catalog.

Functions can be nested inside one another as long as the data type returned by the inner function is a valid input for the outer function.

For example, if a function is used as an argument for the function crossP (cross product), then that function must return a vector.

Also be careful to use closing parentheses correctly.


To use the CAS (computer algebra system), simply enter an algebraic expression on the homescreen and graphDS will simplify it.

Currently, the CAS is compatible with parentheses, foiling, exponents, and distribution, along with standard operators.

It is not compatible with trigonometric, logarithmic, or built-in catalog functions. For now, users should avoid division and algebraic expressions within exponents.

It is also imperative to use proper syntax; implied multiplication (i.e. 3X or 3(X+2) ) is not supported. For multiplication, you must use the * operator (i.e. 3* X or 3* (X+2) ).


Touchscreen - Enter expressions, equations, etc. via the keyboard

D-Pad - Move cursor

A - Confirm an entry

B - Go back

X - Copy

Y - Paste


v0.9.1 2009/01/28

  • Resized the graphing window. Fixed graphing bugs for all graph modes.

v0.9 1/13/09

  • Added nesting compatibility for most catalog functions.
  • Added tracing for inverse functions.
  • Added vector data type.
  • Added catalog functions: crossP, dotP, vectDef, vectLength.


  • Greatly improved the homescreen, adding horizontal and vertical scrolling, copy/paste, etc.
  • Added new graph mode: inverse functions.
  • Added MAPM, an arbitrary precision library for greater accuracy.


  • Made slopefield and Euler's method graphing modes accessible to user.
  • Added a simple CAS.
  • Increased calculation and graphing speed by about 2.5x.
  • Made function nIntegrate faster and more accurate.
  • Added functions: euler, monteCarlo, simpson, trapezoid.


  • Added tracing for Cartesian, parametric, and polar functions (including cursor movement controlled by D-Pad and input for a specific variable value).
  • Increased speed of polar graphing by about 2x.
  • Catalog now continues to scroll when Up or Down is held.


  • Added cursor to homescreen.
  • Added functions: ceiling, floor, median, sum.
  • Added some syntax checking on homescreen.
  • Made some catalog functions available for graphing.
  • Changed the font.


  • Added catalog. Added functions: abs, acs, asn, atn, mean, nDeriv, nIntegrate, rand.


  • Added editor for window & graphing parameters.
  • Added slopefield and Euler's method (currently inaccessible to the user).
  • Fixed bugs in graph input.
  • Changed graphscreen keyboard.
  • Added compatibility with log and ln functions.


  • Added parametric and polar graphing.


  • Added simultaneous graphing of up to four Cartesian functions.
  • Combined function screen with graphscreen.
  • Added cursor to improve function input.


  • Added an easier-to-use keyboard on the touchscreen and graphing for one Cartesian function.


  • Added compatibility with Riemann sums.



Special Thanks To:

  • Nick Stone for the help of writing class expression.
  • Mrs. Smirl for the inspiration and for being a great calculus teacher.
  • Mollusk and everyone at PAlib for writing a great library and other resources.
  • Everyone who has offered support in the PAlib forums.
  • Everyone at devkitPro.
  • Micheal Ring for his arbitrary precision library, MAPM.

External links