-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy patharray_lib_test.f90
72 lines (61 loc) · 1.97 KB
/
array_lib_test.f90
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include "fortran_lib.h"
program main
USE_FORTRAN_LIB_H
use, intrinsic:: iso_fortran_env, only: INPUT_UNIT, OUTPUT_UNIT, ERROR_UNIT
use, intrinsic:: iso_fortran_env, only: INT64
use, non_intrinsic:: comparable_lib, only: almost_equal
use, non_intrinsic:: array_lib, only: iota, l2_norm, eye, get, mul_diag
implicit none
Integer:: i
Integer:: nss(3, 4)
Real:: A(3, 4), B(3, 4)
A(1, :) = [1, 2, 3, 4]
A(2, :) = [5, 6, 7, 8]
A(3, :) = [9, 10, 11, 12]
B(:, 1) = 1*A(:, 1)
B(:, 2) = 2*A(:, 2)
B(:, 3) = 3*A(:, 3)
B(:, 4) = 4*A(:, 4)
TEST(all(almost_equal(mul_diag(A, [1.0, 2.0, 3.0, 4.0]), B)))
B(1, :) = 1*A(1, :)
B(2, :) = 2*A(2, :)
B(3, :) = 3*A(3, :)
TEST(all(almost_equal(mul_diag([1.0, 2.0, 3.0], A), B)))
TEST(almost_equal(l2_norm([1.0, 2.0]), 5.0))
TEST(all(iota(0) == [(i, i = 1, 0)]))
TEST(all(iota(1) == [1]))
TEST(all(iota(2) == [1, 2]))
TEST(all(iota(3) == [1, 2, 3]))
TEST(all(iota(-3, -4) == [(i, i = 1, 0)]))
TEST(all(iota(-3, -3) == [-3]))
TEST(all(iota(-3, -2) == [-3, -2]))
TEST(all(iota(-3, -1) == [-3, -2, -1]))
TEST(all(iota(2, 3, -3) == [(i, i = 1, 0)]))
TEST(all(iota(2, 2, -3) == [2]))
TEST(all(iota(2, 1, -3) == [2]))
TEST(all(iota(2, 0, -3) == [2]))
TEST(all(iota(2, -1, -3) == [2, -1]))
TEST(all(iota(2, -2, -3) == [2, -1]))
TEST(all(iota(2, -3, -3) == [2, -1]))
TEST(all(iota(2, -4, -3) == [2, -1, -4]))
nss = eye(size(nss, 1), size(nss, 2))
TEST(nss(1, 1) == 1)
TEST(nss(1, 2) == 0)
TEST(nss(1, 3) == 0)
TEST(nss(1, 4) == 0)
TEST(nss(2, 1) == 0)
TEST(nss(2, 2) == 1)
TEST(nss(2, 3) == 0)
TEST(nss(2, 4) == 0)
TEST(nss(3, 1) == 0)
TEST(nss(3, 2) == 0)
TEST(nss(3, 3) == 1)
TEST(nss(3, 4) == 0)
TEST(get(iota(5), 1) == 1)
TEST(get(iota(5), 2_INT64) == 2)
TEST(get(iota(5), 3) == 3)
TEST(get(iota(5), 4) == 4)
TEST(get(iota(5), 5) == 5)
write(OUTPUT_UNIT, *) 'SUCCESS: ', __FILE__
stop
end program main