MATLAB Examples

## Basic operations

Define two int64 arrays

```a = int64(1:10)' b = int64(-5:4)' ```
```a = 1 2 3 4 5 6 7 8 9 10 b = -5 -4 -3 -2 -1 0 1 2 3 4 ```

```a+b ```
```ans = -4 -2 0 2 4 6 8 10 12 14 ```

Every operation also works with scalar values

```a+1 ```
```ans = 2 3 4 5 6 7 8 9 10 11 ```

Test subtraction

```a-b ```
```ans = 6 6 6 6 6 6 6 6 6 6 ```

Test multiplication

```a.*b ```
```ans = -5 -8 -9 -8 -5 0 7 16 27 40 ```

Test division and absolute value

```a./ (abs(b) + 1) ```
```ans = 0 0 0 1 2 6 3 2 2 2 ```

Powers

```int64(2)^50 ```
```ans = 1125899906842624 ```

Test modulo

```mod(a,2) ```
```ans = 1 2 3 4 5 6 7 8 9 10 ```

Bitshift

```bitshift(int64(1),40) ```
```ans = 1099511627776 ```

## Matrix multiplication

Matrix multiplication is also supported

```A = int64(100*rand(5)) B = int64(100*rand(5,3)) C = A*B Cdouble = double(A)*double(B) ```
```A = 91 34 5 85 69 49 42 22 83 65 79 41 79 8 27 91 96 18 48 0 86 41 5 35 45 B = 94 73 21 30 38 17 41 55 86 14 1 46 56 3 96 C = 14833 8502 13453 11570 6661 13693 13519 11759 12110 12844 11329 7299 12529 8281 8863 Cdouble = 14833 8502 13453 11570 6661 13693 13519 11759 12110 12844 11329 7299 12529 8281 8863 ```

## Timing

Generate large matrices

```A = int64(100*rand(400)); B = int64(100*rand(400)); ```

Time the multiplication using int64

```tic C = A*B; toc ```
```Elapsed time is 0.343107 seconds. ```

```A = double(A); B = double(B); tic C = A*B; toc ```
```Elapsed time is 0.017866 seconds. ```

We see that using doubles is faster for big matrices, because it uses LAPACK, which is heavily optimized.