1function gbtest79 2%GBTEST79 test real power 3% Tests all real, inf, and nan cases. 4 5% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2021, All Rights Reserved. 6% SPDX-License-Identifier: GPL-3.0-or-later 7 8list = [-2:0.5:2 inf -inf nan] ; 9 10fprintf ('gbtest79: test power') ; 11 12maxerr = 0 ; 13maxerr_single = 0 ; 14 15for xr = list 16 fprintf ('.') ; 17 18 X = xr ; 19 GX = GrB (X) ; 20 Xs = single (X) ; 21 GXs = GrB (Xs) ; 22 23 for yr = list 24 Y = yr ; 25 GY = GrB (Y) ; 26 Ys = single (Y) ; 27 GYs = GrB (Ys) ; 28 29 Z = X .^ Y ; 30 Z2 = GX .^ GY ; 31 [err, errnan] = gbtest_err (Z, Z2) ; 32 znorm = abs (Z) ; 33 if (znorm > 0) 34 err = err / znorm ; 35 end 36 37 if (err > 1e-14) 38 fprintf ('(%g) .^ (%g) = (%g,%g) (%g,%g)', ... 39 xr, yr, real (Z), imag (Z), ... 40 real (Z2), imag (Z2)) ; 41 fprintf (' err: %g', err) ; 42 fprintf (' DOUBLE DIFFERS') ; 43 fprintf ('\n') ; 44 % pause 45 end 46 if (~errnan) 47 maxerr = max (maxerr, err) ; 48 end 49 % assert (err < 1e-14) 50 51 Z = Xs .^ Ys ; 52 Z2 = GXs .^ GYs ; 53 [err, errnan] = gbtest_err (Z, Z2) ; 54 znorm = abs (Z) ; 55 if (znorm > 0) 56 err = err / znorm ; 57 end 58 if (~errnan) 59 maxerr_single = max (maxerr_single, err) ; 60 end 61 62 if (err > 1e-6) 63 fprintf ('(%g) .^ (%g) = (%g,%g) (%g,%g)', ... 64 xr, yr, real (Z), imag (Z), ... 65 real (Z2), imag (Z2)) ; 66 fprintf (' err: %g', err) ; 67 fprintf (' SINGLE DIFFERS') ; 68 fprintf ('\n') ; 69 % pause 70 end 71 72 % assert (maxerr_single < 1e-6) ; 73 end 74end 75 76A = int32 (magic (4)) ; 77B = int32 (2 * rand (4)) ; 78GA = GrB (A) ; 79GB = GrB (B) ; 80C1 = A.^B ; 81C2 = GA.^GB ; 82assert (isequal (C1, C2)) ; 83 84fprintf ('\nmaxerr: %g %g\n', maxerr, maxerr_single) ; 85assert (maxerr < 1e-14) 86assert (maxerr_single < 1e-6) 87 88fprintf ('\ngbtest79: all tests passed\n') ; 89 90