Changes in v1.11.0
Note that API v1.11 will not be stabilized until April of 2025. API v1.10 is the current stable version for use in production. We will also continue to support API v1.9, including bugfixes, until the v1.11 release.Changes in v1.10.0
Calculator Changes:
-
Added the ability to work with complex numbers in the graphing and scientific calculators. See this article for more information.
-
Added the ability to create regressions directly from the table column user interface. See the support article on regressions for more information.
-
Added support for recursive functions. See this article for more information.
-
Show more decimal digits in labels with computed coordinates.
-
Added the ability to pan the graphpaper with the keyboard. Try it here, and see our keyboard shortcut documentation.
API Changes:
-
Added
allowComplex
, which enables the "Complex Mode" switch in the Settings Menu. This is used to toggle on support for graphing complex numbers. See this article for more information about using complex numbers in the calculator. -
Added a
customRegressions
option that can be used to limit users to a preset menu of regression models rather than allowing arbitrary models. See the support article on regressions for more information. -
The 3D calculator constructor is now bundled with the main API file. See the 3D calculator documentation for more information.
Changes in v1.9.3
Calculator Changes:
- Fixed a layout bug in edit list mode that could cause the duplicate and remove controls to be difficult to read in long expressions. This bug was introduced in API v1.9.1.
Changes in v1.9.2
Calculator Changes:
- Allow copy/paste (or copy button on touch) for labels on points of interest.
API Changes:
-
Added a
defaultLogModeRegressions
constructor option for the graphing calculator. Whentrue
, all linearizable regression models will have log mode enabled by default, but the checkbox used to toggle log mode will still be visible and usable in the expression interface. See this support article for more information about how log mode changes the strategy the calculator uses for fitting regression parameters. -
Added an
increaseLabelPrecision
constructor option for the graphing calculator. Whentrue
, labels will display more decimal digits than they did previously. Note that this will be the standard behavior beginning with v1.10, but is configurable in v1.9.x from v1.9.2 forward so as to avoid silently changing precision when users update to this patch version.
Changes in v1.9.1
Calculator Changes:
- Small accessibility improvements to background and text color.
Changes in v1.9.0
Calculator Changes:
- Added an option to use logarithmic axis scales.
- Added support for the tone method, which respects the audio api option
- Added interval comprehensions to generalize plotting and computation to continuous intervals.
API Changes:
- Added
logScales
constructor option to the graphing calculator to control whether logarithmic axis scales may be used (defaults totrue
). - Added
xAxisScale
andyAxisScale
graph settings to control the scales of the x and y axes. These may be set to'linear'
or'logarithmic'
and default to'linear'
. - Added
graphDescription
graph setting to override the automatically generated description that is set for the graph paper element. The value may be a string orundefined
. Default isundefined
. See Accessibility Notes. - Added
GraphingCalculator.withHistoryReplacement
method to the graphing calculator, providing a way to modify the calculator state without adding new entries to the the undo/redo history. - Added
tone
graph setting to control whether thetone
command is enabled (defaults totrue
). - Added
showMovablePoints
option for screenshots, which renders movable points with their halo. - Added
muted
option for globally muting and unmuting expressions that usetone()
. - Added the ability to create and update notes via
.setExpression()
. - The
substitutions
option now controls the availability of both "with" substitutions and list comprehensions. In previous versions, this option only controlled the availability of "with" substitutions, and there was no way to disable list comprehensions.
Changes in v1.8.5
Calculator Changes:
- Fixed an issue preventing users from writing the "percent of" operator in Braille.
Changes in v1.8.4
API Changes:
- When the
capExpressionSize
constructor option is set totrue
, expressions will be limited to a maximum nesting depth of 30 in addition to the existing limit of 500 LaTeX tokens. Nesting in this context refers to constructs that change the baseline of text or the size of delimiters: for example, superscripts and subscripts, fractions, square roots, parentheses, brackets, etc. Very deeply nested expressions can be resource intensive to render, and could even crash a browser tab in some cases. - Fixed a bug that caused
capExpressionSize
to be ignored when certain calculator keypad keys were pressed.
Changes in v1.8.3
Calculator Changes:
- Updated various accessibility-related markup and labels for improved compatibility with adaptive technologies.
- Added a keyboard shortcut to toggle the visibility of the keypad: ALT+K on Windows or CTRL+K on Apple devices.
Changes in v1.8.2
API Changes:
- Added
GraphingCalculator.openKeypad()
method to open the calculator keypad. - Fixed an issue introduced in v1.8.0 that could prevent webpack and other bundlers from bundling the API.
Changes in v1.8.1
Calculator changes
- Fixed a CSS issue affecting layout in Safari 13 and older.
Changes in v1.8.0
API Changes:
- Added a
playing
expression property that may be set viasetExpression
and determines whether an expression should animate, if it is a slider. - Deprecated
administerSecretFolders
API flag and renamed it toauthorFeatures
. We will continue to supportadministerSecretFolders
for backwards compatibility, and it will be equivalent toauthorFeatures
. - Added the ability to make expressions
readonly
when theauthorFeatures
flag is set. This makes it impossible to edit the LaTeX of an expression, while retaining the ability to change settings, show/hide, or directly manipulate where relevant (sliders or movable points, for example). - Deprecated the
Desmos.LabelSizes
convenience object. ThelabelSize
expression property now accepts an arbitrary LaTeX string, not merely a string enum. Legacy enum values in graph states created with previous API versions will be automatically migrated to equivalent numerical values as part of a call toGraphingCalculator.setState()
.Desmos.LabelSizes.SMALL
will now be equal to the LaTeX string'0.85'
,Desmos.LabelSizes.MEDIUM
will now be equal to'1'
, andDesmos.LabelSizes.LARGE
will be equal to'1.35'
. We recommend updating code to use LaTeX strings directly instead of theDesmos.LabelSizes
properties, butDesmos.LabelSizes
will continue to be supported for backwards compatibility. - Added
substitutions
constructor option to the graphing calculator to enable or disable "with" substitutions. - Added an event object with a
isUserInitiated
property to the global change event.
Calculator changes
- Added an audio trace keyboard shortcut and keypad button for describing graph axes.
- Added a keyboard shortcut to toggle between degrees and radians inside the graphing and scientific calculators. It is invoked in Windows browsers with ALT+D or CTRL+D on Apple devices.
- The keyboard shortcut to toggle between decimal and fraction evaluation output has been changed to ALT+SHIFT+A on Windows and COMMAND+SHIFT+A on Apple hardware.
- It is now possible to typeUNICODE characters using the CTRL+U keystroke from within ChromeOS.
- It is now possible to copy evaluated output to the clipboard using a keyboard. When an evaluation appears, press TAB to focus it, followed by the device's command to copy to clipboard. On Windows this is typically CTRL+C or COMMAND+C on Apple devices. This behavior applies only to the graphing calculator.
- Added custom color methods to the keypad.
- Table columns that are functions of the first table column now connect points with discrete line segments rather than a continuous curve when the table column line display is turned on. The calculator uses a migration internally to preserve the display behavior of previously saved states.
- Independent table columns can now be defined through references to lists.
- Introduced "with" substitutions in the graphing calculator. Substitutions allow evaluating an expression after substituting a new value for one or more of its dependencies.
Changes in v1.7.3
Calculator changes
- Fixed a cross-site scripting (XSS) vulnerability in the graphing calculator that could allow executing attacker-controlled javascript in a user's browser if that user interacted with a specially-crafted saved graph. This vulnerability could impact API consumers who allow users to load calculator states that have been created by other users.
Changes in v1.7.2
Calculator changes
- Fixed a bug that could cause the system onscreen keypad to occlude the calculator's keypad while editing math on certain ChromeOS and Windows touch devices.
Changes in v1.7.1
API Changes:
- Remove keypad buttons for "Visualizations" functions (
histogram
,dotplot
, andboxplot
) whenever they are disabled by setting thedistributions
option tofalse
. This is consistent with the way similar options behave (e.g.,restrictedFunctions
).
Calculator changes
- Added a workaround for a Safari 16 drawing bug that could cause lines and points to be displayed with the wrong color or width. This drawing bug has been reported to Webkit here.
Changes in v1.7.0
API Changes:
- Added
actions
constructor option to the graphing calculator to enable or disable Actions. - Added
audio
constructor option to the graphing calculator to allow generated audio (such as the sounds played aloud in audio trace mode) to be muted. See Accessibility Notes. - When the
capExpressionSize
constructor option is set totrue
, limit expressions to 500 LaTeX tokens instead of 100 characters. In many cases, tokens are single characters, but LaTeX commands like\sin
count as a single token no matter how many characters they contain, and LaTeX source whitespace does not count as a token (so1 + 2
counts as 3 tokens even though it has 5 characters). Typesetting performance is more directly determined by the number of tokens than the number of characters, so this change allows more accurately restricting only those expressions that could cause slow math layout. - When the
trace
option is set tofalse
, clicking an image on the graph paper will no longer select it. - Updated the list of supported languages with 11 new languages. Catalan, Hungarian, and Ukranian are no longer currently officially supported.
Calculator changes
- Introduced Actions in the graphing calculator. Actions allow updating the value of a variable in response to events like clicks or clock ticks.
- Added list comprehensions to the graphing calculator. List comprehensions allow for more flexibility when creating a list based on existing lists.
- It is now possible to open an expression's options menu with shift + click in addition to long-pressing the icon.
- Added keyboard shortcuts to expand and collapse all folders in the expressions list simultaneously.
- Polygons no longer need to appear only at the top level of an expression. In particular, it is now possible to make lists of polygons or assign them to variables.
- The functions menu in the onscreen keypad has a new, simplified design. Buttons appear in a single flat panel rather than in categorized tabs.
- Added a
unique()
built-in function that removes duplicate elements from a list. - The undo/redo stack size has been increased from 20 to 100 states.
- The compiler, which transforms user input into functions for sampling and plotting, is now faster and more robust in the face of very large or complicated expressions.
- MathQuill received performance improvements that make selection and rendering of large or deeply nested expressions more efficient.
- The way that math is read when using a screen reader has been updated to speak shorter forms of common numeric fractions and exponents.
Changes in v1.6
API Changes:
-
GraphingCalculator.removeSelected()
now returns theid
of the expression that was removed, orundefined
if no expression was selected. -
Added a
GraphingCalculator.selectedExpressionId
observable property that holds theid
of the currently selected expression, orundefined
if no expression is selected. -
Added
brailleControls
constructor option to the four-function, scientific, and graphing calculators to allow removing Braille controls from the calculators. -
Added a
zoomFit
constructor option to the graphing calculator. Whentrue
, tables and distributions will display an icon that allows the user to automatically snap the viewport to appropriate bounds for viewing that expression. -
Added a
forceEnableGeometryFunctions
constructor option to the graphing calculator. Whentrue
, it will force thedistance
andmidpoint
functions to be enabled, even ifrestrictedFunctions
is set totrue
. In that case, the geometry functions will also be added to the "Misc" keypad. -
The
es-ES
language code has been deprecated, and will be treated ases
for backwards compatibility -
Added
'fraction'
as anadditionalFunctions
option in the four-function calculator. When in use, ana/b
button will be added to the keypad to allow the creation of fractions and mixed numbers. When not in use, fractions and mixed numbers will be parsed as errors. -
Added a
forceLogModeRegressions
constructor option for the graphing calculator. Whentrue
, all linearizable regression models will have log mode enabled by default, and the checkbox used to toggle log mode will be hidden from the expression interface. See this support article for more information about how log mode changes the strategy the calculator uses for fitting regression parameters. -
Added
pointSize
,pointOpacity
,lineWidth
, andlineOpacity
properties that may be set viasetExpression
to control plotting styles of expressions. These may be set to either a number, or a latex string that evaluates to a number. These same properties may also now be set on table columns.
Calculator changes
-
New list functionality in the graphing calculator:
- Added
sort
,shuffle
, andjoin
functions - Added syntax for selecting several elements from a list. If
L
is a list,L[1,3,5]
selects three elements from the list,L[3...5]
selects the third through fifth elements of the list, andL[3...]
selects the third though final elements of the list. IfM
is a list,L[M]
selects the elements ofL
with indices given by the elements ofM
. - Added syntax for filtering lists. If
L
is a list,L[L>0]
selects the positive elements of the list, andL[mod(L, 2)=0]
selects the even elements of the list.
- Added
-
Points may now be added and subtracted from one another, or multiplied or divided by numbers. Arithmetic on points treats points as vectors. Example.
-
Integrals may now have infinite bounds. Example.
-
Piecewise expressions may now use points in the branches. Example,
-
Piecewise expressions where the branches are lists of different lengths have changed their behavior. Previously, the length of the result was the minimum of the lengths of the branches. Now, the length of the result is equal to the length of the branch that was chosen. Example.
-
Improved audio trace sounds.
-
Added a new keypad view for audio trace to make audio trace accessible on touch screen devices.
-
Added an option to exclude outliers from boxplots (defaults to true), where an outlier is any value below the first quartile or above the third quartile by more than 1.5 times the interquartile range. Outliers will be rendered as "open" points, and the whiskers will extend to the minimum/maximum values that are not outliers. Example.
-
Added a new
frac
shortcut to the graphing and scientific calculators (and, conditionally, the four-function calculator when thea/b
button is added to the keypad) that allows creating fractions and mixed numbers more easily form the keyboard. -
Point labels are now drawn with the same color and opacity as the point they attached too. Previously, labels were drawn lighter than the corresponding points.
-
The default opacity for graphed lines was increased to meet WCAG 2.1 AA contrast standards.
Changes in v1.5
API Changes:
-
Added a
format
option toGraphingCalculator.asyncScreenshot
that allows you to choose between PNG and SVG output. -
Added a
brailleMode
constructor option to the graphing calculator, which allows people using refreshable Braille displays to read and write equations using either the Nemeth or UEB math codes. -
Added a
sixKeyInput
constructor option to the graphing calculator. This option allows users to write the six-dot Braille characters using the home row keys (S, D, F, J, K, and L). -
Updated the alphabetical keypads to have the same features as the QWERTY keypads.
Calculator Changes:
-
Added Braille input and output to the graphing calculator. Users with refreshable Braille displays may choose to read and write equations using either Nemeth or UEB math codes. Users may also choose to enable "six key input," which allows them to enter six-dot Braille characters using the home row keys. These options are available through the settings menu. See our Braille accessibility documentation for more information.
-
The
length
function now works on lists containing non-numeric types. -
Improved translation coverage in the four-function and scientific calculators.
-
Larger font size on the calculator keypads when in projector mode.
-
Added arrow keys to the scientific calculator keypad to improve expression editing on touch devices.
-
Images are now omitted during audio trace mode.
Changes in v1.4
API Changes:
-
Added
sliders
constructor option to allow disabling sliders in the graphing calculator. -
Added
plotImplicits
constructor option to allow disabling plotting implicit equations and inequalities in the graphing calculator. Note that this option is similar to the existingplotSingleVariableImplicitEquations
option, but the new option applies to both equations and inequalities with any number of variables. -
Added
plotInequalities
constructor option to allow disabling plotting inequalities in the graphing calculator. -
The
fillOpacity
expression property may now be set to either a number, or a latex string that evaluates to a number.
Calculator Changes:
- Added a
spearman
function that outputs Spearman's rank correlation coefficient between two lists of numbers.
Changes in v1.3
File Size (gzipped): 477kb
API Changes:
-
Added a
brailleExpressionDownload
constructor option and setting to the four-function and scientific calculators. This option sets whether it is possible for the user to export a Braille version of the expression list. Default is true. -
Added a
showResetButtonOnGraphpaper
constructor option. If a default state is set, a small reset button will appear on the graphpaper. -
Added a
distributions
constructor option for enabling/disabling functions for working with statistical distributions and visualizing univariate data. -
Added a
showLabels
option toGraphingCalculator.asyncScreenshot()
for including point labels in the captured image. -
Added a
randomSeed
property to theGraphingCalculator.settings
observable object. -
Added a
GraphingCalculator.newRandomSeed()
method that will globally re-randomize any expressions relying onrandom()
values.
Calculator Changes:
-
- Univariate data visualizations:
histogram
,dotplot
,boxplot
- Statistical distributions:
uniformdist
,normaldist
,tdist
,poissondist
,binomialdist
- Distribution functions:
pdf
,cdf
,quantile
,inversecdf
- Hypothesis testing:
ttest
,ittest
- Five-number summary:
stats
- Univariate data visualizations:
-
random()
function:- Generate random samples from any distribution.
- Sample (with replacement) from lists.
- Re-randomize values with the "randomize" button or by passing in a dynamic seed.
-
"Edit List" mode is now accessible via keyboard.
-
Usability improvements for large tables:
- Increased copy-paste limit to 1,000 rows of tabular data.
- Tables with more than 50 rows now collapse when not in focus.
-
For improved readability of long numbers, thin spaces are now automatically inserted between digit groupings.
-
Added a 'cbrt' shortcut for cube roots.
-
Better handling of parameter domain bounds in nonlinear regressions.
-
Added a "zoom fit" button for tables.
-
Updated styling for evaluated outputs.
Changes in v1.2
File Size (gzipped): 435kb
API Changes:
-
Added
decimalToFraction
configuration option that controls whether users are allowed to perform decimal to fraction conversion in evaluations. -
Added the ability for the
GraphingCalculator.updateSettings()
method to change configuration options at runtime. Any configuration option or graph setting may be passed into the constructor, and any of those properties can by updated viaupdateSettings()
. -
Added the ability to set a point label's size and orientation via
setExpression()
. -
Added
Desmos.LabelSizes
andDesmos.LabelOrientations
enums. -
Added
links
configuration option for the four function and scientific calculators to match the existing option on the graphing calculator. Settinglinks: false
removes external links from the calculator, which may be useful in testing environments or other restricted environments. -
Added
capExpressionSize
configuration option for the graphing, four function, and scientific calculators. SettingcapExpressionSize: true
sets the maximum length of an expression to 100 characters. This option is set tofalse
by default. -
For partners who are self-hosting the API, the API can now be loaded as a CommonJS module, and bundled using webpack and other CommonJS compatible bundlers.
Calculator Changes:
-
Updated keypad styling that includes improved colors and contrast for better visual accessibility, in accordance with WCAG 2.1 guidelines.
-
Added decimal to fraction conversion in evaluations when a good rational approximation is detected.
-
For all numeric computations, the calculators will attempt to propagate rational values whenever feasible, leading to more intuitive output in many common situations where intermediate floating-point rounding errors might otherwise introduce confusion.
-
Domain bounds for parametric and polar graphs, as well as bounds and step sizes for sliders, can now be defined in terms of dynamic variables in addition to static constants.
-
Audio trace is enabled for more expression types: notably tables and point definitions.
-
Audio trace now uses custom-generated waveforms, rather than relying on HTML5 audio synthesis methods, making the audio experience more consistent across browsers.
-
Contextual information reported by screen readers is more accurate when using keyboard navigation inside of expressions involving sums, integrals, and products.
-
For screen readers that support the aria-roledescription attribute, the calculators provide more useful, human-readable descriptions of objects and page elements.
Changes in v1.1
File Size (gzipped): 418kb
API Changes:
-
Added a
clearIntoDegreeMode
constructor option that determines whether the clearing the graph through the UI or throughsetBlank()
will return the calculator todegreeMode
. -
Added a
plotSingleVariableImplicitEquations
constructor option that determines whether the graphing calculator should plot single-variable implicit equations. -
Added more evaluation information to the
expressionAnalysis
observable object. -
Added
fill
andfillOpacity
properties that may be set viasetExpression
. They determine whether the interior of a polygon or parametric curve is shaded, and at what opacity. -
The
style
property on expression objects passed intosetExpression
has been deprecated and split intopointStyle
andlineStyle
, which control which style is applied to each type of object plotted by the expression. Although support for using thestyle
property continues in API v1.1, it may be removed in future versions. -
Added the ability to control visibility of points and line segments when plotting point lists. You may set boolean
points
andlines
properties throughsetExpression
that will control whether points, lines, or both are plotted. -
Deprecated the
columnMode
property for table columns. It has been split into booleanpoints
andlines
properties that control whether points and lines should be plotted, respectively. Although support for usingcolumnMode
continues in API v1.1, it may be removed in future versions. Objects passed intosetExpression
should use the newpoints
andlines
properties instead. -
Table columns now accept more drawing styles. You may optionally include a
pointStyle
andlineStyle
on columns provided as part of a call tosetExpression
. -
Added a
settingsMenu
constructor option to the four-function and scientific calculators. -
Added a
brailleMode
constructor option and setting to the four-function and scientific calculators. This option allows persons using refreshable Braille displays to read and write equations using either the Nemeth or UEB math codes. -
Added a
sixKeyInput
constructor option and setting to the four-function and scientific calculators. This option allows users to write the six-dot Braille characters using the Home Row keys (S, D, F, J, K, and L). -
Added a
projectorMode
constructor option and setting to the four-function and scientific calculators.
Calculator Changes:
-
Audio trace now works with tables and point lists.
-
Improved screen-reader support for movable points, especially points with dynamic labels.
-
Images can now be rotated by specifying an "angle" property in the expressions list.
-
Improved image stacking and added the ability to "background" an image.
-
Added more options for label positioning.
-
Smarter "home" zoom behavior for graphs with default states.
-
Improved error messaging. No more "Sorry, I don't understand this."
-
Added uniaxial scaling for non-touch devices.
-
Added the ability to shade the interiors of polygons and parametric curves.
-
Added a
polygon
command that creates a polygon from a list of points, a comma-separated sequence of point arguments, or two numeric lists. -
Added more drawing style options for point lists in order to bring their behavior closer to that of table columns.
-
Added more flexibility in drawing styles for points and line table columns.
-
Added a
quartile
function that uses the Moore and McCabe method in order to better align with U.S. educational standards.
Changes in v1.0
File Size (gzipped): 435kb
API changes:
-
Added an
invertedColors
constructor option and graph setting for all three calculators, which enables an inverted color scheme. -
Deprecated the
GraphingCalculator.focusedMathQuill
observable property. This feature may be removed in a future version. -
Added a
GraphingCalculator.expressionAnalysis
observable object that contains information about the calculator's evaluation of each expression. -
Added methods to all calculators for moving through or clearing the undo/redo history.
-
Added a
GraphingCalculator.getExpressions
method that returns an array of expression states. -
Added a
listValue
observable property to helper expressions that evaluate to lists. -
Added a
GraphingCalculator.asyncScreenshot
method that takes screenshots asynchronously for increased flexibility when needed. -
The deprecated
singleVariableSolutions
constructor option has been removed. The graphing calculator no longer displays solutions to single variable equations in the expression list.
Changes in v0.9
File Size (gzipped): 417kb
API changes:
- Added
imageUploadCallback
constructor option to allow custom storage of user-uploaded images. See image uploads for details. - Added the ability to paste a valid graph URL in order to import a graph using the
pasteGraphLink
constructor option - Added the ability to disable pasting table data using the
pasteTableData
constructor option - Added the ability to set and show/hide point labels via
calculator.setExpression
- Added the ability to disable tracing of curves and clicking of points to show coordinates using the
trace
[constructor option]((/api/v0.9/docs/index.html#document-calculator) - Added the
links
constructor option to allow disabling external links in notes and folders, as well as links to help documentation in the expressions list for certain situations (like regressions with negative R2 values or plotted expressions with unresolved detail) - Added the ability to set an expression's
secret
property viacalculator.setExpression
. Secret expressions will be graphed (if applicable), but will not appear in the expressions list. - Added a
graphReset
observable event. - Added a
'change'
observable event to theBasicCalculator
s that fires any time the persisted state would change. It functions in the same way as for the graphing calculator. - Added the ability to set drawing styles for curves and points through
GraphingCalculator.setExpression
. - Provide a
Desmos.Styles
object that contains valid drawing styles. - Changed the graphing calculator's
singleVariableSolutions
constructor option default tofalse
, and deprecated the option. It will be removed in future API versions. - Added a destructor for
GraphingCalculator
andBasicCalculator
instances to unbind listeners and free resources. - Reduced the size of graph states returned from
GraphingCalculator.getState
by eliding default settings and expression properties. In many cases, this reduces the size of saved states by more than 50%. - Added an
autosize
constructor option to control automatic resizing behavior. Because this option is enabled by default, it is no longer required to call.resize()
when updating the calculator's dimensions.
Changes in v0.8
File Size (gzipped): 384kb
API changes:
- Added four function and scientific calculators to the API. Note that in order to use these features, they must be specifically enabled for your API key.
Desmos.Calculator
constructor renamed toDesmos.GraphingCalculator
.Desmos.Calculator
will be retained as a legacy alias indefinitely for backwards compatibility.- Deprecated
calculator.setGraphSettings
in favor ofcalculator.updateSettings
.calculator.updateSettings
is now available as part of all three calculators. - Renamed
calculator.graphSettings
observable property tocalculator.settings
.calculator.graphSettings
will be retained as a legacy alias for backwards compatibility. - Added the ability to set the language of the calculator through the API. A particular set of languages can be loaded as part of the API file by specifying a
lang
URL parameter in the API script src. The language of a calculator instance can be set and updated using thecalculator.updateSettings
function. - Added the ability to provide a custom color palette using the
colors
constructor option. Colors of existing states can be optionally remapped by passing the{remapColors: true}
option tocalculator.setState
. calculator.setState
andcalculator.setBlank
now clear the undo/redo history by default. To preserve the history after either operation, pass in an additional argument of{allowUndo: true}
.- Added a
calculator.setDefaultState
method to allow replacing the "Delete All" button with a "Reset" button that sets a custom default state instead of the blank state. - Added a
focusFirstExpression
method to all calculators to allow focusing the first expression. - Added option to preserved axis numbers in small screenshots by passing the
{preserveAxisNumbers: true}
option tocalculator.screenshot
. - Added
degreeMode
constructor option to allow initializing the angle mode of a scientific or graphing calculator. - Added ability to unobserve observable properties using the
unobserve
method. - Added the ability to set and update the font size for all of the calculators by passing a
fontSize
property toupdateSettings
. - Added
images
,folders
, andnotes
constructor options to allow optionaly disabling images, folders, and notes. - Added
restrictedFunctions
constructor option to the graphing calculator that removes certain functionality that may not be allowed in some testing environments. - Added
qwertyKeyboard
constructor option to the graphing and scientific calculators that allow changing the QWERTY keyboard to an alphabetical layout to comply with requirements of certain testing environments. - Added the ability to set a point's drag mode using the
dragMode
property withinCalculator.setExpression
.
Graphing calculator changes
- The calculator is now accessible to screen readers. When a screen reader is active, math expressions are read as you navigate and edit them, and plotted curves can play an audio representation of the whole curve, or read coordinates of a keyboard-controlled trace point. See our accessibility documentation for more information.
- Individual points like
(1,2)
can now be made draggable by long-pressing their expression icon and selecting a drag mode. 1/0
evaluates toundefined
instead ofInfinity
.- You can now paste tables of data with more than two columns.
- Slider and domain bounds have been switched from numerical inputs to mathquill inputs, and can accept expressions like
π/2
.
New Examples:
- examples/fourfunction.html
- examples/scientific.html
- examples/default-state.html
- examples/managing-observers.html
- examples/languages.html
- examples/colors.html
Changes in v0.7
File Size (gzipped): 467kb
API changes:
- Added observable
change
event to the calculator that can be used to determine when a user's work should be persisted. - Added secret folders. When a calculator is created with the
{administerSecretFolders: true}
option, users will be allowed to create secret folders and see their contents. When loaded into a calculator with{administerSecretFolders: false}
(the default), secret folders are hidden from users, but their contents are still graphed, and any functions or variables defined in secret folders can still be used. This workflow is useful for creating activities that ask students to describe the properties of unknown functions. - The
solutions
constructor option has been split into separatepointsOfInterest
andsingleVariableSolutions
options.
New Examples:
Calculator Changes:
- Added prime notation for derivatives: is now equivalent to .
- Added evaluation of definite integrals. Learn more.
- Simplified graph settings ("wrench") menu.
- Improved contrast of graph axes and axis tick labels.
- New color palette for plotted curves. Saved graphs will automatically have colors translated from the old palette to the new palette when they are loaded into new versions of the API.
Name | v0.6 | v0.7 |
---|---|---|
Colors.RED | #c0504d | #c74440 |
Colors.BLUE | #4f81bd | #2d70b3 |
Colors.GREEN | #9bbb59 | #388c46 |
Colors.PURPLE | #8064a2 | #6042a6 |
Colors.ORANGE | #f79646 | #fa7e19 |
Colors.BLACK | #000000 | #000000 |
Changes in v0.6
File Size (gzipped): 679kb
API changes:
- Improved behavior of calculator when its container element is not visible, or not in the DOM.
- Fixed bug where resizing a calculator could inappropriately change the mathBounds of the graphpaper.
- Added
targetPixelRatio
option tocalculator.screenshot
, which is useful for producing oversampled images that display well on high pixel density ("retina") screens. Defaults to 1. Previous versions of the API behaved as if this option was instead set towindow.devicePixelRatio
, which meant that if the client was on a retina device, screenshots would actually have dimensions twice as large as specified. - Removed
Desmos.Colors.next
method. Desmos.Colors is now just a list of the 6 hexidecimal colors that we use for graphs in the calculator.
New Examples:
Calculator changes:
- Added ability to graph arbitrary implicit inequalities, e.g.
x^4 + y^4 < 1
. - Improved undo/redo UI.
- Improved frame rate when animating with sliders, and during zooming and panning.
Changes in v0.5
File Size (gzipped): 693kb
API changes:
- Added support for creating tables using
calculator.setExpression
by passing an expression object withtype: 'table'
and acolumns
property. - Added the ability to specify slider bounds and parametric domain bounds with the optional
sliderBounds
anddomain
expression properties. - Added methods for mapping between math and pixel coordinates,
calculator.mathToPixels
andcalculator.pixelsToMath
, and observable propertycalculator.graphpaperBounds
for being notified when the math or pixel coordinates of the graphpaper boundaries change. - Added
calculator.setMathBounds
as a replacement forcalculator.setViewport
to be consistent withcalculator.graphpaperBounds.mathCoordinates
. Note that the argument tocalculator.setMathBounds
is an object withtop
,bottom
,left
, andright
properties, whereas the argument tocalculator.setViewport
was an array with 4 elements.calculator.setViewport
is still available for backwards compatibility, but may be deprecated in a future version. - Added ability to set graph display properties via
calculator.setGraphSettings
and observe these properties throughcalculator.graphSettings
. - Added support for externally deleting the currently selected expression, independently of the expression list, through the
calculator.removeSelected
method, and thecalculator.isAnyExpressionSelected
observable property. Note that these methods are likely to be superseded by richer ways of manipulating (possibly multiple) selected expressions in the future. - Added support for external mathquill input mechanisms through the new
calculator.focusedMathQuill
observable property. This property gives access to the currently focused mathquill object when there is one, allowing direct use of the Mathquill API. Note that we are currently using thedev
branch ofMathquill
, which we expect will becomemaster
before API v0.5 is stabilized. - The
id
expression property became optional.calculator.setExpression({latex: 'y=x'})
is now a valid way to create a line, but note that it is not currently possible to manipulate an expression through the API after it is created unless an id is specified.
New Examples:
- examples/graphsettings.html
- examples/graphpaper-bounds.html
- examples/column-properties.html
- examples/remove-selected.html
- examples/custom-keypad.html
- examples/click-table.html
Calculator Changes:
- Added functions for computing summary statistics:
total
,length
,mean
,median
,quantile
,mad
,stdev
,var
,cov
, andcorr
. - Added "log mode" regressions for certain models to match other statistics software.
Changes in v0.4
File Size (gzipped): 407kb
API changes:
- Added
border
constructor option. We will now draw a gray border around the calculator by default, unless this option is set tofalse
. - Deprecated
menus
constructor option. UsesettingsMenu
andexpressionsTopbar
instead.
API Bug fixes:
- Corrected behavior of successive calls to
calculator.removeExpression
Calculator changes:
- Added Desmos logo to the bottom left of the calculator.
- Added lists and regressions.
Calculator bug fixes:
- Improved behavior of windows 8 devices that have both touch and physical keyboard interfaces.
- Fixed axes forgetting hidden state when loaded from a saved calculator state into the API.
- Improved consistency of undo/redo when there are multiple calculator instances on one page.
Changes in v0.3
File Size (gzipped): 378kb
API changes:
- Added the expressions list to the API (previously, the API only exposed the graph paper).
- Changed name of constructor from
Graphpaper
toCalculator
. - Added required
apiKey
url parameter. - Added optional
options
argument toCalculator
constructor with the following options (alltrue
/false
):keypad
graphpaper
expressions
expressionsCollapsed
menus
zoomButtons
solutions
lockViewport
- New methods on calculator object:
removeExpression
removeExpressions
screenshot
getState
setState
setBlank
- Added observable helper expressions, created with
Calculator.HelperExpression
.
Calculator changes:
- Added ability to plot general implicit equations of the form
0 = f(x, y)
. - Added ability to place images on the graphpaper.
Calculator bug fixes:
- Stopped attempting to use console.log when it doesn't exist (certain circumstances in IE).