calc-extension by Martin Väth
Calculate values of mathematical expressions
You'll need Firefox to use this extension
Extension Metadata
Screenshots
About this extension
The extension strives to be useful for everybody quickly needing
brief or mid-long calculations: in daily “browser” life, as a
mathematician, or as a programmer - there is support for all needs.
Formulas can be entered in the typical mathematician's or programmer's syntax - both is understood. There is also support for lengthy sessions (saving/restoring, exporting to clipboard, etc).
The original motivation was to experiment with a Pratt parser.
There is already a much richer expression syntax than in most languages
(implicit multiplication signs, no braces necessary for function calls),
and it would be simple to extend the syntax to a more full-blown “language”.
(In fact, earlier versions of calc-extension had a simpler syntax.
Readers interested in the parser implementation can check
After installing calc-extension, it can be used as follows.
Click the calc-extension symbol
Then a page opens where you can enter a formula (see below) which will be
calculated when you press the solver button (
(There is an option to use the enter key instead if you prefer.)
The result is then shown and you can enter the next formula.
You can also go back to an earlier entered formula and “recalculate” it
(e.g. after you modified some variables).
To remove a formula from your list, simply remove the main formula text
and press the solver button.
A simple formula is a usual mathematical expression which consists of numbers, the usual operators
As usual in mathematics (though not in most computer languages),
it is possible to omit the multiplication sign.
However:
Be aware that
For multiplication use instead one of the symbols
The division symbol is
Numbers have the usual floating-point format, e.g.
There are further operators which can be used in expressions:
Note that functions bind stronger than all binary operators, i.e.
Furthermore, there are constants available:
Finally, it is possible to define variables with e.g.
Variable names must only consist of English characters, numbers, or
The whole syntax and operator precedence is inspired by javascript.
However, the following things are new.
There is a special variable name
the last (succesful) calculation.
There are also special sequences which can occur anywhere in an expression
and which cause options to switch (you can also switch them by the mouse).
To modify options more permanently (also for future sessions even across
browser restarts), you have to set them in the preferences window.
The actual calculation of the functions and number conversion occurs
by javascript calls. Therefore, mathematical properties like available
precision, error messages, number limitations, and possible inaccuracies
(and possibly even bugs) are inherited from the javascript interpreter.
Example session
Permissions
The extension requires the storage permission in order to store options/accordion state and possibly a session on local storage.
Languages
Currently, the following languages are supported:
brief or mid-long calculations: in daily “browser” life, as a
mathematician, or as a programmer - there is support for all needs.
Formulas can be entered in the typical mathematician's or programmer's syntax - both is understood. There is also support for lengthy sessions (saving/restoring, exporting to clipboard, etc).
The original motivation was to experiment with a Pratt parser.
There is already a much richer expression syntax than in most languages
(implicit multiplication signs, no braces necessary for function calls),
and it would be simple to extend the syntax to a more full-blown “language”.
(In fact, earlier versions of calc-extension had a simpler syntax.
Readers interested in the parser implementation can check
data/js/parser.js
).After installing calc-extension, it can be used as follows.
Click the calc-extension symbol
1+2
.Then a page opens where you can enter a formula (see below) which will be
calculated when you press the solver button (
~>
).(There is an option to use the enter key instead if you prefer.)
The result is then shown and you can enter the next formula.
You can also go back to an earlier entered formula and “recalculate” it
(e.g. after you modified some variables).
To remove a formula from your list, simply remove the main formula text
and press the solver button.
A simple formula is a usual mathematical expression which consists of numbers, the usual operators
+
-
*
/
and braces (
)
.As usual in mathematics (though not in most computer languages),
it is possible to omit the multiplication sign.
However:
Be aware that
x
means the variable x and not a multiplication sign…!For multiplication use instead one of the symbols
*
·
×
or simply omit it (a space can be used to separate adjacent tokens).The division symbol is
/
or :
.Numbers have the usual floating-point format, e.g.
17
0.1
1.2e-3
or they can be octal or hexadecimal: For an octal number start with 0
, for a hexadecimal number start with 0x
.There are further operators which can be used in expressions:
%
remainder (“modulo”)**
or↑
exponentiation (binds from right to left)&
bitwise AND|
bitwise OR^
bitwise XOR
Note that functions bind stronger than all binary operators, i.e.
sin π/2
is the same as sin(π)/2
but differs from sin(π/2)
.
sin
the sine, argument is in radianscos
the cosine, argument is in radianstan
the tangent, argument is in radiansasin
the arcsine, in radiansacos
the arccosine, in radiansatan
the arctangent, in radianssinh
the hyperbolic sinecosh
the hyperbolic cosinetanh
the hyperbolic tangentasinh
the hyperbolic areasineacosh
the hyperbolic areacosineatanh
the hyperbolic areatangentlog10
the base 10 logarithmlog2
the base 2 logarithmlog
the natural logarithm (base E)log1p
log(1+x)
wherex
is the argumentexp
the exponential function (base E)expm1
exp x - 1
wherex
is the argumentsqrt
the square root, that issqrt x = x ** (1/2)
cbrt
the cube root, that iscbrt x = x ** (1/3)
abs
the absolute valuesign
the signum (1, 0, or -1)floor
the value rounded down to its nearest integerceil
the value rounded up to its nearest integertrunc
the value rounded to the integer of smaller absolute valueround
the value rounded to its nearest integerfround
the value rounded to the nearest 32 bit floatclz32
the number of leading zero bits in a 32 bit representation
Furthermore, there are constants available:
E
Euler's number exp 1PI
orπ
the circle number acos -1SQRT2
sqrt 2SQRT1_2
sqrt 1/2LN2
log 2LN10
log 10LOG2E
log2 ELOG10E
log10 EEPSILON
orε
the distance of 1 to the smallest larger floating point number
Finally, it is possible to define variables with e.g.
a=...
and to use them.Variable names must only consist of English characters, numbers, or
_
.The whole syntax and operator precedence is inspired by javascript.
However, the following things are new.
There is a special variable name
#
which always refers to the result ofthe last (succesful) calculation.
There are also special sequences which can occur anywhere in an expression
and which cause options to switch (you can also switch them by the mouse).
To modify options more permanently (also for future sessions even across
browser restarts), you have to set them in the preferences window.
'width:height'
default is 60:1"base"
switch output to base (2-36)!
new input fields are textareas (multiple lines)?
new input fields are for single lines
The actual calculation of the functions and number conversion occurs
by javascript calls. Therefore, mathematical properties like available
precision, error messages, number limitations, and possible inaccuracies
(and possibly even bugs) are inherited from the javascript interpreter.
Example session
1 + 2(1+1) + (2-1)(3-2)
- ~> 6
1·1 + 1×1 + 1 1 + 1*1
- ~> 4
2↑2↑3 - 2**8 + 4/3 - 1:3
- -> 1
1 - cos π/2 + cos(PI/2)
- ~> 1.5
a = 3(# + 1)
- ~> 7.5
# + 4a
- ~> 37.5
0xF | 0100 "16"
- ~> 4f (in base 16)
Permissions
The extension requires the storage permission in order to store options/accordion state and possibly a session on local storage.
Languages
Currently, the following languages are supported:
- en (default language)
- de
Rate your experience
More information
- Add-on Links
- Version
- 5.4resigned1
- Size
- 49.51 KB
- Last updated
- 9 months ago (Apr 25, 2024)
- Related Categories
- License
- GNU General Public License v2.0 only
- Version History
Add to collection
More extensions by Martin Väth
- There are no ratings yet
- There are no ratings yet
- There are no ratings yet
- There are no ratings yet
- There are no ratings yet
- There are no ratings yet