1function gbtest38
2%GBTEST38 test sqrt, eps, ceil, floor, round, fix, real, conj, ...
3% isfinite, isinf, isnan, spfun, eig
4
5% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2021, All Rights Reserved.
6% SPDX-License-Identifier: GPL-3.0-or-later
7
8rng ('default') ;
9
10for trial = 1:40
11
12    A = 1e3 * rand (3) ;
13    B = single (A) ;
14
15    G = GrB (A) ;
16    H = GrB (B) ;
17
18    err = norm (sqrt (A) - sqrt (G), 1) ; assert (err < 8 * eps ('double')) ;
19    err = norm (sqrt (B) - sqrt (H), 1) ; assert (err < 8 * eps ('single')) ;
20
21    assert (gbtest_eq (eps (A), eps (G))) ;
22    assert (gbtest_eq (eps (B), eps (H))) ;
23
24    assert (gbtest_eq (ceil (A), ceil (G))) ;
25    assert (gbtest_eq (ceil (B), ceil (H))) ;
26
27    assert (gbtest_eq (floor (A), floor (G))) ;
28    assert (gbtest_eq (floor (B), floor (H))) ;
29
30    assert (gbtest_eq (round (A), round (G))) ;
31    assert (gbtest_eq (round (B), round (H))) ;
32
33    assert (gbtest_eq (fix (A), fix (G))) ;
34    assert (gbtest_eq (fix (B), fix (H))) ;
35
36    assert (gbtest_eq (real (A), real (G))) ;
37    assert (gbtest_eq (real (B), real (H))) ;
38
39    assert (gbtest_eq (conj (A), conj (G))) ;
40    assert (gbtest_eq (conj (B), conj (H))) ;
41
42    C = A ;
43    C (1,1) = inf ;
44    C (2,2) = nan ;
45    G = GrB (C) ;
46
47    assert (gbtest_eq (isfinite (C), isfinite (G))) ;
48    assert (gbtest_eq (isnan    (C), isnan    (G))) ;
49
50    A = sprand (10, 10, 0.5) ;
51    G = GrB (A) ;
52    assert (gbtest_eq (spfun (@exp, A), double (spfun (@exp, G)))) ;
53
54    A = rand (10) ;
55    G = GrB (A) ;
56    assert (isequal (eig (A), double (eig (G)))) ;
57
58    A = sparse (A+A') ;
59    G = GrB (A) ;
60    err = norm (eig (A) - double (eig (G)), 2) ;
61    assert (err < 1e-12) ;
62
63    A = rand (10) ;
64    B = rand (10) ;
65    G = GrB (A) ;
66    H = GrB (B) ;
67    [V1,D1] = eig (A, B) ;
68    [V2,D2] = eig (G, H) ;
69    assert (isequal (V1, double (V2))) ;
70    assert (isequal (D1, double (D2))) ;
71
72end
73
74fprintf ('gbtest38: all tests passed\n') ;
75