Doing Math
The documentation that you're reading is a design document where most of the features you're reading are yet to be implemented. Check the Note on the Docs
As the Professor Walter White said once, "Jesse, let's cook some math", or something like that, I don't know.
Anyways, let's get to the point.
Basic Math
Here's a table of the typical math operators in NeoHaskell and what they do:
Operator | Description |
---|---|
+ | Adds two numbers |
- | Subtracts two numbers |
* | Multiplies two numbers |
/ | Divides two numbers |
** | Raises a number to a power |
% | Gets the remainder of a division |
>> | Shift right binary operation |
<< | Shift left binary operation |
Trying it in the REPL
Addition Example
Lets say that I want to add 56 and 72 and find its result, I can do it as shown:
neo> 56+72
128
Subtraction Example
In this example I am subtracting 64 from 112
neo> 112-64
48
Division Example
Lets say I want to divide 117 by 12 and find the quotient, I can do it in NeoHaskell like this:
neo> 117/12
9
Power Example
Lets say I want to find what we will get by cubing five (five raised to the power of three), I can do it in NeoHaskell as shown:
neo> 5**3
125
Remainder Example
I want to know what we will get as remainder when we divide -21 by 4, I can do it as shown:
neo> 21%4
-1
Right Shift Example
This operator shifts the bits (the 1's and 0's of the computer representation) of a number to the right by a specified number of bits. For example, if we shift the bits of 5 to the right by 2 bits, we will get 1. This is because 5 in binary is 101, and when we shift it to the right by 2 bits, we get 1, which is 001 in binary.
neo> 5>>2
1
Left Shift Example
This operator shifts the bits (the 1's and 0's of the computer representation) of a number to the left by a specified number of bits. For example, if we shift the bits of 5 to the left by 2 bits, we will get 20. This is because 5 in binary is 101, and when we shift it to the left by 2 bits, we get 20, which is 10100 in binary.
neo> 5<<2
20
Spacing doesn't matter
NeoHaskell doesn't care about spacing, you can write the above examples as shown below and it will still work:
neo> 56 + 72
128
neo> 112 - 64
48
neo> 117 / 12
9
neo> 5 **3
125
More Advanced Math
More advanced math functions are available in the Math
module. It is
available by default, so you don't need to import it.
Modules? Import? What??
Don't worry, we'll get to that later. For now, just know that you can use do some math operations like this:
neo> Math.sin 90
0.8939966636005579
neo> Math.sqrt 64
8
neo> Math.log 10
2.302585092994046
You can experiment and explore the advanced math functions available by
typing Math.
and then pressing TAB
to see the list of functions.