Contents
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
Test addition
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.
Now try using double instead
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.