Thank you for checking out Calca! This web version is experimental with many features not working. It will only stay up during April 1, 2014. If you like Calca, please purchase it!
Welcome to Calca - the text editor that loves math.
Calca recognizes math in your text files and performs calculations as you type.
There is one very important thing to know, whenever you want Calca to solve or simplify or compute something, you just write `=>`
2 + 2 => 4
80% * 2000 => 1,600
sin(pi/6) => 0.5
10 * (x + 0.5x) => 15 x
$33 in ¥ => ¥3,214.365
Pay special attention throughout this introduction for the `=>` symbol, everything to the right of it is computed by Calca. These computations are highlighted in a light gray and cannot be edited.
Now you can go to any point in the document, change something, and see Calca update all the gray areas.
Calca is great for making cumulative computations - just like a spreadsheet:
trip cost = flight +
(hotel + food) * days
days = 7
flight = $500
hotel = $120
food = $30
trip cost => $1,550
As you edit the numbers, the total will update automatically. Try it yourself, change the hotel rate from $120 to $300 (let's enjoy ourselves).
Calca loves functions and makes them really easy to create and manipulate. We can specify a generic function for a line and then calculate its value:
y(x) = m*x + b
y(10) => 10 m + b
Calca wasn't able to give a numeric value for `y(10)` because it doesn't know the values of `m` or `b`.
We can tell it those values as additional arguments to the function:
y(10, m=2, b=103) => 123
We can even ask Calca solve for a variable from that function:
b => y - m*x
b(x=0, y=10, m=1) => 10
It's algebra and arithmetic at your fingertips.
Below are the basic elements of Calca that you need to understand to use it effectively. I promise, it's not a lot.
Numbers are written just as you would expect:
12; -12; 3,100; 3.14159
Note that you can use `,` inside numbers to make them more readable.
You can also use power of ten notation:
3.14e3 => 3,140
3.14e-3 => 0.0031
The basic math operations are all supported:
1 + 2 * 3 => 7
(1 + 2) * 3 => 9
-22/7 => -3.1429
2^32 - 1 => 4,294,967,295
Variables are just words that represent some number.
a; x; radius of earth
Calca is smart enough to understand multiword variables so you don't have to be coy.
A definition relates a name to a value. Calca highlights definitions in bold so that you can easily recognize them:
taco = $1.5
lamborghini = $404,195
lamborghini/taco => 269,463.3333
It looks like we could own a Lamborghini for just `270,000` tacos!
All definitions are actually functions:
f = m*a
f(20) => 20 a
Calca simply looks at the variables used on the right hand side of the function in order to determine its arguments.
It's usually better to specify the function arguments directly to be sure you and Calca are thinking alike:
good f(a) = m*a
good f(20) => 20 m
### Built in Functions
Calca knows all about the standard math functions:
sin(pi/6) => 0.5
atan2(10,10) in ° => 45°
floor(8/3) => 2
ceil(8/3) => 3
log(1000, 2) => 9.9658
2^ceil(log(1000, 2)) => 1,024
### Solving for variables
If you want to rewrite a definition in terms of one of its variables, then just ask Calca to do that:
f = (9/5)*c + 32
c => 0.5556 f - 17.7778
### Unit and Currency Conversions
Calca knows over 200 units and 35 currencies. You can convert between them using the `in` keyword.
100 yards in m => 100 yards in m
$20 in eur => 14.488€
### Google Search
Sometimes you won't know a value and Calca won't know it either. In those dire times, you can resort to using a Google search to find it out.
Simply begin a definition as you normally would, but put a `?` to the right of the equals sign instead of a value. Calca will then beg Google for an answer on your behalf.
radius of the earth = #?
Remove the `#` above and Calca will replace it with the value `3,959 mi`.
If Calca doesn't understand you, it will underline the text it's having a problem with.
1 + 2 * =>
That line doesn't work because Calca is expecting more information (a number or a variable) after the `*`.
Calca also understands [Markdown][markdown] text so you can annotate your calculations in a nice readable fashion.
Lines that begin with a `#` are interpreted as headings. The number of hash signs specifies the heading level. You can make text **bold** and *italic*. Lastly you can format text as code by surrounding it with `backticks`.
## Party on!
You now know enough to make good use of Calca, and there are many more features to discover!