1#!perl 2 3use strict; 4use warnings; 5 6use Math::Matrix; 7use Test::More tests => 1096; 8 9my $x; 10 11# 2-by-3 matrix 12 13note(<<'EOF'); 14$x = Math::Matrix -> new([[1, 2, 3], 15 [4, 5, 6]]); 16EOF 17 18$x = Math::Matrix -> new([[1, 2, 3], 19 [4, 5, 6]]); 20 21cmp_ok($x -> is_empty(), '==', 0, '$x -> is_empty()'); 22cmp_ok($x -> is_scalar(), '==', 0, '$x -> is_scalar()'); 23cmp_ok($x -> is_vector(), '==', 0, '$x -> is_vector()'); 24cmp_ok($x -> is_row(), '==', 0, '$x -> is_row()'); 25cmp_ok($x -> is_col(), '==', 0, '$x -> is_col()'); 26cmp_ok($x -> is_square(), '==', 0, '$x -> is_square()'); 27cmp_ok($x -> is_symmetric(), '==', 0, '$x -> is_symmetric()'); 28cmp_ok($x -> is_antisymmetric(), '==', 0, '$x -> is_antisymmetric()'); 29cmp_ok($x -> is_persymmetric(), '==', 0, '$x -> is_persymmetric()'); 30cmp_ok($x -> is_hankel(), '==', 0, '$x -> is_hankel()'); 31cmp_ok($x -> is_zero(), '==', 0, '$x -> is_zero()'); 32cmp_ok($x -> is_one(), '==', 0, '$x -> is_one()'); 33cmp_ok($x -> is_constant(), '==', 0, '$x -> is_constant()'); 34cmp_ok($x -> is_identity(), '==', 0, '$x -> is_identity()'); 35cmp_ok($x -> is_exchg(), '==', 0, '$x -> is_exchg()'); 36cmp_ok($x -> is_bool(), '==', 0, '$x -> is_bool()'); 37cmp_ok($x -> is_perm(), '==', 0, '$x -> is_perm()'); 38cmp_ok($x -> is_int(), '==', 1, '$x -> is_int()'); 39cmp_ok($x -> is_diag(), '==', 0, '$x -> is_diag()'); 40cmp_ok($x -> is_adiag(), '==', 0, '$x -> is_adiag()'); 41cmp_ok($x -> is_tridiag(), '==', 0, '$x -> is_tridiag()'); 42cmp_ok($x -> is_atridiag(), '==', 0, '$x -> is_atridiag()'); 43cmp_ok($x -> is_pentadiag(), '==', 0, '$x -> is_pentadiag()'); 44cmp_ok($x -> is_apentadiag(), '==', 0, '$x -> is_apentadiag()'); 45cmp_ok($x -> is_heptadiag(), '==', 0, '$x -> is_heptadiag()'); 46cmp_ok($x -> is_aheptadiag(), '==', 0, '$x -> is_aheptadiag()'); 47cmp_ok($x -> is_band(0), '==', 0, '$x -> is_band(0)'); 48cmp_ok($x -> is_aband(0), '==', 0, '$x -> is_aband(0)'); 49cmp_ok($x -> is_band(1), '==', 0, '$x -> is_band(1)'); 50cmp_ok($x -> is_aband(1), '==', 0, '$x -> is_aband(1)'); 51cmp_ok($x -> is_band(2), '==', 0, '$x -> is_band(2)'); 52cmp_ok($x -> is_aband(2), '==', 0, '$x -> is_aband(2)'); 53cmp_ok($x -> is_band(3), '==', 0, '$x -> is_band(3)'); 54cmp_ok($x -> is_aband(3), '==', 0, '$x -> is_aband(3)'); 55cmp_ok($x -> is_band(4), '==', 0, '$x -> is_band(4)'); 56cmp_ok($x -> is_aband(4), '==', 0, '$x -> is_aband(4)'); 57cmp_ok($x -> is_triu(), '==', 0, '$x -> is_triu()'); 58cmp_ok($x -> is_striu(), '==', 0, '$x -> is_striu()'); 59cmp_ok($x -> is_tril(), '==', 0, '$x -> is_tril()'); 60cmp_ok($x -> is_stril(), '==', 0, '$x -> is_stril()'); 61cmp_ok($x -> is_atriu(), '==', 0, '$x -> is_atriu()'); 62cmp_ok($x -> is_satriu(), '==', 0, '$x -> is_satriu()'); 63cmp_ok($x -> is_atril(), '==', 0, '$x -> is_atril()'); 64cmp_ok($x -> is_satril(), '==', 0, '$x -> is_satril()'); 65 66# row vector 67 68note(<<'EOF'); 69$x = Math::Matrix -> new([[1, 2, 3]]); 70EOF 71 72$x = Math::Matrix -> new([[1, 2, 3]]); 73 74cmp_ok($x -> is_empty(), '==', 0, '$x -> is_empty()'); 75cmp_ok($x -> is_scalar(), '==', 0, '$x -> is_scalar()'); 76cmp_ok($x -> is_vector(), '==', 1, '$x -> is_vector()'); 77cmp_ok($x -> is_row(), '==', 1, '$x -> is_row()'); 78cmp_ok($x -> is_col(), '==', 0, '$x -> is_col()'); 79cmp_ok($x -> is_square(), '==', 0, '$x -> is_square()'); 80cmp_ok($x -> is_symmetric(), '==', 0, '$x -> is_symmetric()'); 81cmp_ok($x -> is_antisymmetric(), '==', 0, '$x -> is_antisymmetric()'); 82cmp_ok($x -> is_persymmetric(), '==', 0, '$x -> is_persymmetric()'); 83cmp_ok($x -> is_hankel(), '==', 0, '$x -> is_hankel()'); 84cmp_ok($x -> is_zero(), '==', 0, '$x -> is_zero()'); 85cmp_ok($x -> is_one(), '==', 0, '$x -> is_one()'); 86cmp_ok($x -> is_constant(), '==', 0, '$x -> is_constant()'); 87cmp_ok($x -> is_identity(), '==', 0, '$x -> is_identity()'); 88cmp_ok($x -> is_exchg(), '==', 0, '$x -> is_exchg()'); 89cmp_ok($x -> is_bool(), '==', 0, '$x -> is_bool()'); 90cmp_ok($x -> is_perm(), '==', 0, '$x -> is_perm()'); 91cmp_ok($x -> is_int(), '==', 1, '$x -> is_int()'); 92cmp_ok($x -> is_diag(), '==', 0, '$x -> is_diag()'); 93cmp_ok($x -> is_adiag(), '==', 0, '$x -> is_adiag()'); 94cmp_ok($x -> is_tridiag(), '==', 0, '$x -> is_tridiag()'); 95cmp_ok($x -> is_atridiag(), '==', 0, '$x -> is_atridiag()'); 96cmp_ok($x -> is_pentadiag(), '==', 0, '$x -> is_pentadiag()'); 97cmp_ok($x -> is_apentadiag(), '==', 0, '$x -> is_apentadiag()'); 98cmp_ok($x -> is_heptadiag(), '==', 0, '$x -> is_heptadiag()'); 99cmp_ok($x -> is_aheptadiag(), '==', 0, '$x -> is_aheptadiag()'); 100cmp_ok($x -> is_band(0), '==', 0, '$x -> is_band(0)'); 101cmp_ok($x -> is_aband(0), '==', 0, '$x -> is_aband(0)'); 102cmp_ok($x -> is_band(1), '==', 0, '$x -> is_band(1)'); 103cmp_ok($x -> is_aband(1), '==', 0, '$x -> is_aband(1)'); 104cmp_ok($x -> is_band(2), '==', 0, '$x -> is_band(2)'); 105cmp_ok($x -> is_aband(2), '==', 0, '$x -> is_aband(2)'); 106cmp_ok($x -> is_band(3), '==', 0, '$x -> is_band(3)'); 107cmp_ok($x -> is_aband(3), '==', 0, '$x -> is_aband(3)'); 108cmp_ok($x -> is_band(4), '==', 0, '$x -> is_band(4)'); 109cmp_ok($x -> is_aband(4), '==', 0, '$x -> is_aband(4)'); 110cmp_ok($x -> is_triu(), '==', 0, '$x -> is_triu()'); 111cmp_ok($x -> is_striu(), '==', 0, '$x -> is_striu()'); 112cmp_ok($x -> is_tril(), '==', 0, '$x -> is_tril()'); 113cmp_ok($x -> is_stril(), '==', 0, '$x -> is_stril()'); 114cmp_ok($x -> is_atriu(), '==', 0, '$x -> is_atriu()'); 115cmp_ok($x -> is_satriu(), '==', 0, '$x -> is_satriu()'); 116cmp_ok($x -> is_atril(), '==', 0, '$x -> is_atril()'); 117cmp_ok($x -> is_satril(), '==', 0, '$x -> is_satril()'); 118 119# column vector 120 121note(<<'EOF'); 122$x = Math::Matrix -> new([[1], [2], [3]]); 123EOF 124 125$x = Math::Matrix -> new([[1], [2], [3]]); 126 127cmp_ok($x -> is_empty(), '==', 0, '$x -> is_empty()'); 128cmp_ok($x -> is_scalar(), '==', 0, '$x -> is_scalar()'); 129cmp_ok($x -> is_vector(), '==', 1, '$x -> is_vector()'); 130cmp_ok($x -> is_row(), '==', 0, '$x -> is_row()'); 131cmp_ok($x -> is_col(), '==', 1, '$x -> is_col()'); 132cmp_ok($x -> is_square(), '==', 0, '$x -> is_square()'); 133cmp_ok($x -> is_symmetric(), '==', 0, '$x -> is_symmetric()'); 134cmp_ok($x -> is_antisymmetric(), '==', 0, '$x -> is_antisymmetric()'); 135cmp_ok($x -> is_persymmetric(), '==', 0, '$x -> is_persymmetric()'); 136cmp_ok($x -> is_hankel(), '==', 0, '$x -> is_hankel()'); 137cmp_ok($x -> is_zero(), '==', 0, '$x -> is_zero()'); 138cmp_ok($x -> is_one(), '==', 0, '$x -> is_one()'); 139cmp_ok($x -> is_constant(), '==', 0, '$x -> is_constant()'); 140cmp_ok($x -> is_identity(), '==', 0, '$x -> is_identity()'); 141cmp_ok($x -> is_exchg(), '==', 0, '$x -> is_exchg()'); 142cmp_ok($x -> is_bool(), '==', 0, '$x -> is_bool()'); 143cmp_ok($x -> is_perm(), '==', 0, '$x -> is_perm()'); 144cmp_ok($x -> is_int(), '==', 1, '$x -> is_int()'); 145cmp_ok($x -> is_diag(), '==', 0, '$x -> is_diag()'); 146cmp_ok($x -> is_adiag(), '==', 0, '$x -> is_adiag()'); 147cmp_ok($x -> is_tridiag(), '==', 0, '$x -> is_tridiag()'); 148cmp_ok($x -> is_atridiag(), '==', 0, '$x -> is_atridiag()'); 149cmp_ok($x -> is_pentadiag(), '==', 0, '$x -> is_pentadiag()'); 150cmp_ok($x -> is_apentadiag(), '==', 0, '$x -> is_apentadiag()'); 151cmp_ok($x -> is_heptadiag(), '==', 0, '$x -> is_heptadiag()'); 152cmp_ok($x -> is_aheptadiag(), '==', 0, '$x -> is_aheptadiag()'); 153cmp_ok($x -> is_band(0), '==', 0, '$x -> is_band(0)'); 154cmp_ok($x -> is_aband(0), '==', 0, '$x -> is_aband(0)'); 155cmp_ok($x -> is_band(1), '==', 0, '$x -> is_band(1)'); 156cmp_ok($x -> is_aband(1), '==', 0, '$x -> is_aband(1)'); 157cmp_ok($x -> is_band(2), '==', 0, '$x -> is_band(2)'); 158cmp_ok($x -> is_aband(2), '==', 0, '$x -> is_aband(2)'); 159cmp_ok($x -> is_band(3), '==', 0, '$x -> is_band(3)'); 160cmp_ok($x -> is_aband(3), '==', 0, '$x -> is_aband(3)'); 161cmp_ok($x -> is_band(4), '==', 0, '$x -> is_band(4)'); 162cmp_ok($x -> is_aband(4), '==', 0, '$x -> is_aband(4)'); 163cmp_ok($x -> is_triu(), '==', 0, '$x -> is_triu()'); 164cmp_ok($x -> is_striu(), '==', 0, '$x -> is_striu()'); 165cmp_ok($x -> is_tril(), '==', 0, '$x -> is_tril()'); 166cmp_ok($x -> is_stril(), '==', 0, '$x -> is_stril()'); 167cmp_ok($x -> is_atriu(), '==', 0, '$x -> is_atriu()'); 168cmp_ok($x -> is_satriu(), '==', 0, '$x -> is_satriu()'); 169cmp_ok($x -> is_atril(), '==', 0, '$x -> is_atril()'); 170cmp_ok($x -> is_satril(), '==', 0, '$x -> is_satril()'); 171 172# scalar 173 174note(<<'EOF'); 175$x = Math::Matrix -> new([[3]]); 176EOF 177 178$x = Math::Matrix -> new([[3]]); 179 180cmp_ok($x -> is_empty(), '==', 0, '$x -> is_empty()'); 181cmp_ok($x -> is_scalar(), '==', 1, '$x -> is_scalar()'); 182cmp_ok($x -> is_vector(), '==', 1, '$x -> is_vector()'); 183cmp_ok($x -> is_row(), '==', 1, '$x -> is_row()'); 184cmp_ok($x -> is_col(), '==', 1, '$x -> is_col()'); 185cmp_ok($x -> is_square(), '==', 1, '$x -> is_square()'); 186cmp_ok($x -> is_symmetric(), '==', 1, '$x -> is_symmetric()'); 187cmp_ok($x -> is_antisymmetric(), '==', 0, '$x -> is_antisymmetric()'); 188cmp_ok($x -> is_persymmetric(), '==', 1, '$x -> is_persymmetric()'); 189cmp_ok($x -> is_hankel(), '==', 1, '$x -> is_hankel()'); 190cmp_ok($x -> is_zero(), '==', 0, '$x -> is_zero()'); 191cmp_ok($x -> is_one(), '==', 0, '$x -> is_one()'); 192cmp_ok($x -> is_constant(), '==', 1, '$x -> is_constant()'); 193cmp_ok($x -> is_identity(), '==', 0, '$x -> is_identity()'); 194cmp_ok($x -> is_exchg(), '==', 0, '$x -> is_exchg()'); 195cmp_ok($x -> is_bool(), '==', 0, '$x -> is_bool()'); 196cmp_ok($x -> is_perm(), '==', 0, '$x -> is_perm()'); 197cmp_ok($x -> is_int(), '==', 1, '$x -> is_int()'); 198cmp_ok($x -> is_diag(), '==', 1, '$x -> is_diag()'); 199cmp_ok($x -> is_adiag(), '==', 1, '$x -> is_adiag()'); 200cmp_ok($x -> is_tridiag(), '==', 0, '$x -> is_tridiag()'); 201cmp_ok($x -> is_atridiag(), '==', 0, '$x -> is_atridiag()'); 202cmp_ok($x -> is_pentadiag(), '==', 0, '$x -> is_pentadiag()'); 203cmp_ok($x -> is_apentadiag(), '==', 0, '$x -> is_apentadiag()'); 204cmp_ok($x -> is_heptadiag(), '==', 0, '$x -> is_heptadiag()'); 205cmp_ok($x -> is_aheptadiag(), '==', 0, '$x -> is_aheptadiag()'); 206cmp_ok($x -> is_band(0), '==', 1, '$x -> is_band(0)'); 207cmp_ok($x -> is_aband(0), '==', 1, '$x -> is_aband(0)'); 208cmp_ok($x -> is_band(1), '==', 0, '$x -> is_band(1)'); 209cmp_ok($x -> is_aband(1), '==', 0, '$x -> is_aband(1)'); 210cmp_ok($x -> is_band(2), '==', 0, '$x -> is_band(2)'); 211cmp_ok($x -> is_aband(2), '==', 0, '$x -> is_aband(2)'); 212cmp_ok($x -> is_band(3), '==', 0, '$x -> is_band(3)'); 213cmp_ok($x -> is_aband(3), '==', 0, '$x -> is_aband(3)'); 214cmp_ok($x -> is_band(4), '==', 0, '$x -> is_band(4)'); 215cmp_ok($x -> is_aband(4), '==', 0, '$x -> is_aband(4)'); 216cmp_ok($x -> is_triu(), '==', 1, '$x -> is_triu()'); 217cmp_ok($x -> is_striu(), '==', 0, '$x -> is_striu()'); 218cmp_ok($x -> is_tril(), '==', 1, '$x -> is_tril()'); 219cmp_ok($x -> is_stril(), '==', 0, '$x -> is_stril()'); 220cmp_ok($x -> is_atriu(), '==', 1, '$x -> is_atriu()'); 221cmp_ok($x -> is_satriu(), '==', 0, '$x -> is_satriu()'); 222cmp_ok($x -> is_atril(), '==', 1, '$x -> is_atril()'); 223cmp_ok($x -> is_satril(), '==', 0, '$x -> is_satril()'); 224 225# scalar 226 227note(<<'EOF'); 228$x = Math::Matrix -> new([[1]]); 229EOF 230 231$x = Math::Matrix -> new([[1]]); 232 233cmp_ok($x -> is_empty(), '==', 0, '$x -> is_empty()'); 234cmp_ok($x -> is_scalar(), '==', 1, '$x -> is_scalar()'); 235cmp_ok($x -> is_vector(), '==', 1, '$x -> is_vector()'); 236cmp_ok($x -> is_row(), '==', 1, '$x -> is_row()'); 237cmp_ok($x -> is_col(), '==', 1, '$x -> is_col()'); 238cmp_ok($x -> is_square(), '==', 1, '$x -> is_square()'); 239cmp_ok($x -> is_symmetric(), '==', 1, '$x -> is_symmetric()'); 240cmp_ok($x -> is_antisymmetric(), '==', 0, '$x -> is_antisymmetric()'); 241cmp_ok($x -> is_persymmetric(), '==', 1, '$x -> is_persymmetric()'); 242cmp_ok($x -> is_hankel(), '==', 1, '$x -> is_hankel()'); 243cmp_ok($x -> is_zero(), '==', 0, '$x -> is_zero()'); 244cmp_ok($x -> is_one(), '==', 1, '$x -> is_one()'); 245cmp_ok($x -> is_constant(), '==', 1, '$x -> is_constant()'); 246cmp_ok($x -> is_identity(), '==', 1, '$x -> is_identity()'); 247cmp_ok($x -> is_exchg(), '==', 1, '$x -> is_exchg()'); 248cmp_ok($x -> is_bool(), '==', 1, '$x -> is_bool()'); 249cmp_ok($x -> is_perm(), '==', 1, '$x -> is_perm()'); 250cmp_ok($x -> is_int(), '==', 1, '$x -> is_int()'); 251cmp_ok($x -> is_diag(), '==', 1, '$x -> is_diag()'); 252cmp_ok($x -> is_adiag(), '==', 1, '$x -> is_adiag()'); 253cmp_ok($x -> is_tridiag(), '==', 0, '$x -> is_tridiag()'); 254cmp_ok($x -> is_atridiag(), '==', 0, '$x -> is_atridiag()'); 255cmp_ok($x -> is_pentadiag(), '==', 0, '$x -> is_pentadiag()'); 256cmp_ok($x -> is_apentadiag(), '==', 0, '$x -> is_apentadiag()'); 257cmp_ok($x -> is_heptadiag(), '==', 0, '$x -> is_heptadiag()'); 258cmp_ok($x -> is_aheptadiag(), '==', 0, '$x -> is_aheptadiag()'); 259cmp_ok($x -> is_band(0), '==', 1, '$x -> is_band(0)'); 260cmp_ok($x -> is_aband(0), '==', 1, '$x -> is_aband(0)'); 261cmp_ok($x -> is_band(1), '==', 0, '$x -> is_band(1)'); 262cmp_ok($x -> is_aband(1), '==', 0, '$x -> is_aband(1)'); 263cmp_ok($x -> is_band(2), '==', 0, '$x -> is_band(2)'); 264cmp_ok($x -> is_aband(2), '==', 0, '$x -> is_aband(2)'); 265cmp_ok($x -> is_band(3), '==', 0, '$x -> is_band(3)'); 266cmp_ok($x -> is_aband(3), '==', 0, '$x -> is_aband(3)'); 267cmp_ok($x -> is_band(4), '==', 0, '$x -> is_band(4)'); 268cmp_ok($x -> is_aband(4), '==', 0, '$x -> is_aband(4)'); 269cmp_ok($x -> is_triu(), '==', 1, '$x -> is_triu()'); 270cmp_ok($x -> is_striu(), '==', 0, '$x -> is_striu()'); 271cmp_ok($x -> is_tril(), '==', 1, '$x -> is_tril()'); 272cmp_ok($x -> is_stril(), '==', 0, '$x -> is_stril()'); 273cmp_ok($x -> is_atriu(), '==', 1, '$x -> is_atriu()'); 274cmp_ok($x -> is_satriu(), '==', 0, '$x -> is_satriu()'); 275cmp_ok($x -> is_atril(), '==', 1, '$x -> is_atril()'); 276cmp_ok($x -> is_satril(), '==', 0, '$x -> is_satril()'); 277 278# empty 279 280note(<<'EOF'); 281$x = Math::Matrix -> new([]); 282EOF 283 284$x = Math::Matrix -> new([]); 285 286cmp_ok($x -> is_empty(), '==', 1, '$x -> is_empty()'); 287cmp_ok($x -> is_scalar(), '==', 0, '$x -> is_scalar()'); 288cmp_ok($x -> is_vector(), '==', 0, '$x -> is_vector()'); 289cmp_ok($x -> is_row(), '==', 0, '$x -> is_row()'); 290cmp_ok($x -> is_col(), '==', 0, '$x -> is_col()'); 291cmp_ok($x -> is_square(), '==', 1, '$x -> is_square()'); 292cmp_ok($x -> is_symmetric(), '==', 1, '$x -> is_symmetric()'); 293cmp_ok($x -> is_antisymmetric(), '==', 1, '$x -> is_antisymmetric()'); 294cmp_ok($x -> is_zero(), '==', 1, '$x -> is_zero()'); 295cmp_ok($x -> is_one(), '==', 1, '$x -> is_one()'); 296cmp_ok($x -> is_constant(), '==', 1, '$x -> is_constant()'); 297cmp_ok($x -> is_identity(), '==', 1, '$x -> is_identity()'); 298cmp_ok($x -> is_exchg(), '==', 1, '$x -> is_exchg()'); 299cmp_ok($x -> is_bool(), '==', 1, '$x -> is_bool()'); 300cmp_ok($x -> is_perm(), '==', 1, '$x -> is_perm()'); 301cmp_ok($x -> is_int(), '==', 1, '$x -> is_int()'); 302cmp_ok($x -> is_diag(), '==', 0, '$x -> is_diag()'); 303cmp_ok($x -> is_adiag(), '==', 0, '$x -> is_adiag()'); 304cmp_ok($x -> is_tridiag(), '==', 0, '$x -> is_tridiag()'); 305cmp_ok($x -> is_atridiag(), '==', 0, '$x -> is_atridiag()'); 306cmp_ok($x -> is_pentadiag(), '==', 0, '$x -> is_pentadiag()'); 307cmp_ok($x -> is_apentadiag(), '==', 0, '$x -> is_apentadiag()'); 308cmp_ok($x -> is_heptadiag(), '==', 0, '$x -> is_heptadiag()'); 309cmp_ok($x -> is_aheptadiag(), '==', 0, '$x -> is_aheptadiag()'); 310cmp_ok($x -> is_band(0), '==', 0, '$x -> is_band(0)'); 311cmp_ok($x -> is_aband(0), '==', 0, '$x -> is_aband(0)'); 312cmp_ok($x -> is_band(1), '==', 0, '$x -> is_band(1)'); 313cmp_ok($x -> is_aband(1), '==', 0, '$x -> is_aband(1)'); 314cmp_ok($x -> is_band(2), '==', 0, '$x -> is_band(2)'); 315cmp_ok($x -> is_aband(2), '==', 0, '$x -> is_aband(2)'); 316cmp_ok($x -> is_band(3), '==', 0, '$x -> is_band(3)'); 317cmp_ok($x -> is_aband(3), '==', 0, '$x -> is_aband(3)'); 318cmp_ok($x -> is_band(4), '==', 0, '$x -> is_band(4)'); 319cmp_ok($x -> is_aband(4), '==', 0, '$x -> is_aband(4)'); 320cmp_ok($x -> is_triu(), '==', 1, '$x -> is_triu()'); 321cmp_ok($x -> is_striu(), '==', 1, '$x -> is_striu()'); 322cmp_ok($x -> is_tril(), '==', 1, '$x -> is_tril()'); 323cmp_ok($x -> is_stril(), '==', 1, '$x -> is_stril()'); 324cmp_ok($x -> is_atriu(), '==', 1, '$x -> is_atriu()'); 325cmp_ok($x -> is_satriu(), '==', 1, '$x -> is_satriu()'); 326cmp_ok($x -> is_atril(), '==', 1, '$x -> is_atril()'); 327cmp_ok($x -> is_satril(), '==', 1, '$x -> is_satril()'); 328 329# symmetric 330 331note(<<'EOF'); 332$x = Math::Matrix -> new([[1, 2, 3], 333 [2, 4, 5], 334 [3, 5, 6]]); 335EOF 336 337$x = Math::Matrix -> new([[1, 2, 3], 338 [2, 4, 5], 339 [3, 5, 6]]); 340 341cmp_ok($x -> is_empty(), '==', 0, '$x -> is_empty()'); 342cmp_ok($x -> is_scalar(), '==', 0, '$x -> is_scalar()'); 343cmp_ok($x -> is_vector(), '==', 0, '$x -> is_vector()'); 344cmp_ok($x -> is_row(), '==', 0, '$x -> is_row()'); 345cmp_ok($x -> is_col(), '==', 0, '$x -> is_col()'); 346cmp_ok($x -> is_square(), '==', 1, '$x -> is_square()'); 347cmp_ok($x -> is_symmetric(), '==', 1, '$x -> is_symmetric()'); 348cmp_ok($x -> is_antisymmetric(), '==', 0, '$x -> is_antisymmetric()'); 349cmp_ok($x -> is_persymmetric(), '==', 0, '$x -> is_persymmetric()'); 350cmp_ok($x -> is_hankel(), '==', 0, '$x -> is_hankel()'); 351cmp_ok($x -> is_zero(), '==', 0, '$x -> is_zero()'); 352cmp_ok($x -> is_one(), '==', 0, '$x -> is_one()'); 353cmp_ok($x -> is_constant(), '==', 0, '$x -> is_constant()'); 354cmp_ok($x -> is_identity(), '==', 0, '$x -> is_identity()'); 355cmp_ok($x -> is_exchg(), '==', 0, '$x -> is_exchg()'); 356cmp_ok($x -> is_bool(), '==', 0, '$x -> is_bool()'); 357cmp_ok($x -> is_perm(), '==', 0, '$x -> is_perm()'); 358cmp_ok($x -> is_int(), '==', 1, '$x -> is_int()'); 359cmp_ok($x -> is_diag(), '==', 0, '$x -> is_diag()'); 360cmp_ok($x -> is_adiag(), '==', 0, '$x -> is_adiag()'); 361cmp_ok($x -> is_tridiag(), '==', 0, '$x -> is_tridiag()'); 362cmp_ok($x -> is_atridiag(), '==', 0, '$x -> is_atridiag()'); 363cmp_ok($x -> is_pentadiag(), '==', 1, '$x -> is_pentadiag()'); 364cmp_ok($x -> is_apentadiag(), '==', 1, '$x -> is_apentadiag()'); 365cmp_ok($x -> is_heptadiag(), '==', 0, '$x -> is_heptadiag()'); 366cmp_ok($x -> is_aheptadiag(), '==', 0, '$x -> is_aheptadiag()'); 367cmp_ok($x -> is_band(0), '==', 0, '$x -> is_band(0)'); 368cmp_ok($x -> is_aband(0), '==', 0, '$x -> is_aband(0)'); 369cmp_ok($x -> is_band(1), '==', 0, '$x -> is_band(1)'); 370cmp_ok($x -> is_aband(1), '==', 0, '$x -> is_aband(1)'); 371cmp_ok($x -> is_band(2), '==', 1, '$x -> is_band(2)'); 372cmp_ok($x -> is_aband(2), '==', 1, '$x -> is_aband(2)'); 373cmp_ok($x -> is_band(3), '==', 0, '$x -> is_band(3)'); 374cmp_ok($x -> is_aband(3), '==', 0, '$x -> is_aband(3)'); 375cmp_ok($x -> is_band(4), '==', 0, '$x -> is_band(4)'); 376cmp_ok($x -> is_aband(4), '==', 0, '$x -> is_aband(4)'); 377cmp_ok($x -> is_triu(), '==', 0, '$x -> is_triu()'); 378cmp_ok($x -> is_striu(), '==', 0, '$x -> is_striu()'); 379cmp_ok($x -> is_tril(), '==', 0, '$x -> is_tril()'); 380cmp_ok($x -> is_stril(), '==', 0, '$x -> is_stril()'); 381cmp_ok($x -> is_atriu(), '==', 0, '$x -> is_atriu()'); 382cmp_ok($x -> is_satriu(), '==', 0, '$x -> is_satriu()'); 383cmp_ok($x -> is_atril(), '==', 0, '$x -> is_atril()'); 384cmp_ok($x -> is_satril(), '==', 0, '$x -> is_satril()'); 385 386# antisymmetric 387 388note(<<'EOF'); 389$x = Math::Matrix -> new([[ 0, 1, -2], 390 [-1, 0, 3], 391 [ 2, -3, 0]]); 392EOF 393 394$x = Math::Matrix -> new([[ 0, 1, -2], 395 [-1, 0, 3], 396 [ 2, -3, 0]]); 397 398cmp_ok($x -> is_empty(), '==', 0, '$x -> is_empty()'); 399cmp_ok($x -> is_scalar(), '==', 0, '$x -> is_scalar()'); 400cmp_ok($x -> is_vector(), '==', 0, '$x -> is_vector()'); 401cmp_ok($x -> is_row(), '==', 0, '$x -> is_row()'); 402cmp_ok($x -> is_col(), '==', 0, '$x -> is_col()'); 403cmp_ok($x -> is_square(), '==', 1, '$x -> is_square()'); 404cmp_ok($x -> is_symmetric(), '==', 0, '$x -> is_symmetric()'); 405cmp_ok($x -> is_antisymmetric(), '==', 1, '$x -> is_antisymmetric()'); 406cmp_ok($x -> is_zero(), '==', 0, '$x -> is_zero()'); 407cmp_ok($x -> is_one(), '==', 0, '$x -> is_one()'); 408cmp_ok($x -> is_constant(), '==', 0, '$x -> is_constant()'); 409cmp_ok($x -> is_identity(), '==', 0, '$x -> is_identity()'); 410cmp_ok($x -> is_exchg(), '==', 0, '$x -> is_exchg()'); 411cmp_ok($x -> is_bool(), '==', 0, '$x -> is_bool()'); 412cmp_ok($x -> is_perm(), '==', 0, '$x -> is_perm()'); 413cmp_ok($x -> is_int(), '==', 1, '$x -> is_int()'); 414cmp_ok($x -> is_diag(), '==', 0, '$x -> is_diag()'); 415cmp_ok($x -> is_adiag(), '==', 0, '$x -> is_adiag()'); 416cmp_ok($x -> is_tridiag(), '==', 0, '$x -> is_tridiag()'); 417cmp_ok($x -> is_atridiag(), '==', 1, '$x -> is_atridiag()'); 418cmp_ok($x -> is_pentadiag(), '==', 1, '$x -> is_pentadiag()'); 419cmp_ok($x -> is_apentadiag(), '==', 1, '$x -> is_apentadiag()'); 420cmp_ok($x -> is_heptadiag(), '==', 0, '$x -> is_heptadiag()'); 421cmp_ok($x -> is_aheptadiag(), '==', 0, '$x -> is_aheptadiag()'); 422cmp_ok($x -> is_band(0), '==', 0, '$x -> is_band(0)'); 423cmp_ok($x -> is_aband(0), '==', 0, '$x -> is_aband(0)'); 424cmp_ok($x -> is_band(1), '==', 0, '$x -> is_band(1)'); 425cmp_ok($x -> is_aband(1), '==', 1, '$x -> is_aband(1)'); 426cmp_ok($x -> is_band(2), '==', 1, '$x -> is_band(2)'); 427cmp_ok($x -> is_aband(2), '==', 1, '$x -> is_aband(2)'); 428cmp_ok($x -> is_band(3), '==', 0, '$x -> is_band(3)'); 429cmp_ok($x -> is_aband(3), '==', 0, '$x -> is_aband(3)'); 430cmp_ok($x -> is_band(4), '==', 0, '$x -> is_band(4)'); 431cmp_ok($x -> is_aband(4), '==', 0, '$x -> is_aband(4)'); 432cmp_ok($x -> is_triu(), '==', 0, '$x -> is_triu()'); 433cmp_ok($x -> is_striu(), '==', 0, '$x -> is_striu()'); 434cmp_ok($x -> is_tril(), '==', 0, '$x -> is_tril()'); 435cmp_ok($x -> is_stril(), '==', 0, '$x -> is_stril()'); 436cmp_ok($x -> is_atriu(), '==', 0, '$x -> is_atriu()'); 437cmp_ok($x -> is_satriu(), '==', 0, '$x -> is_satriu()'); 438cmp_ok($x -> is_atril(), '==', 0, '$x -> is_atril()'); 439cmp_ok($x -> is_satril(), '==', 0, '$x -> is_satril()'); 440 441# identity 442 443note(<<'EOF'); 444$x = Math::Matrix -> new([[1, 0, 0], 445 [0, 1, 0], 446 [0, 0, 1]]); 447EOF 448 449$x = Math::Matrix -> new([[1, 0, 0], 450 [0, 1, 0], 451 [0, 0, 1]]); 452 453cmp_ok($x -> is_empty(), '==', 0, '$x -> is_empty()'); 454cmp_ok($x -> is_scalar(), '==', 0, '$x -> is_scalar()'); 455cmp_ok($x -> is_vector(), '==', 0, '$x -> is_vector()'); 456cmp_ok($x -> is_row(), '==', 0, '$x -> is_row()'); 457cmp_ok($x -> is_col(), '==', 0, '$x -> is_col()'); 458cmp_ok($x -> is_square(), '==', 1, '$x -> is_square()'); 459cmp_ok($x -> is_symmetric(), '==', 1, '$x -> is_symmetric()'); 460cmp_ok($x -> is_antisymmetric(), '==', 0, '$x -> is_antisymmetric()'); 461cmp_ok($x -> is_persymmetric(), '==', 1, '$x -> is_persymmetric()'); 462cmp_ok($x -> is_hankel(), '==', 1, '$x -> is_hankel()'); 463cmp_ok($x -> is_zero(), '==', 0, '$x -> is_zero()'); 464cmp_ok($x -> is_one(), '==', 0, '$x -> is_one()'); 465cmp_ok($x -> is_constant(), '==', 0, '$x -> is_constant()'); 466cmp_ok($x -> is_identity(), '==', 1, '$x -> is_identity()'); 467cmp_ok($x -> is_exchg(), '==', 0, '$x -> is_exchg()'); 468cmp_ok($x -> is_bool(), '==', 1, '$x -> is_bool()'); 469cmp_ok($x -> is_perm(), '==', 1, '$x -> is_perm()'); 470cmp_ok($x -> is_int(), '==', 1, '$x -> is_int()'); 471cmp_ok($x -> is_diag(), '==', 1, '$x -> is_diag()'); 472cmp_ok($x -> is_adiag(), '==', 0, '$x -> is_adiag()'); 473cmp_ok($x -> is_tridiag(), '==', 1, '$x -> is_tridiag()'); 474cmp_ok($x -> is_atridiag(), '==', 0, '$x -> is_atridiag()'); 475cmp_ok($x -> is_pentadiag(), '==', 1, '$x -> is_pentadiag()'); 476cmp_ok($x -> is_apentadiag(), '==', 1, '$x -> is_apentadiag()'); 477cmp_ok($x -> is_heptadiag(), '==', 0, '$x -> is_heptadiag()'); 478cmp_ok($x -> is_aheptadiag(), '==', 0, '$x -> is_aheptadiag()'); 479cmp_ok($x -> is_band(0), '==', 1, '$x -> is_band(0)'); 480cmp_ok($x -> is_aband(0), '==', 0, '$x -> is_aband(0)'); 481cmp_ok($x -> is_band(1), '==', 1, '$x -> is_band(1)'); 482cmp_ok($x -> is_aband(1), '==', 0, '$x -> is_aband(1)'); 483cmp_ok($x -> is_band(2), '==', 1, '$x -> is_band(2)'); 484cmp_ok($x -> is_aband(2), '==', 1, '$x -> is_aband(2)'); 485cmp_ok($x -> is_band(3), '==', 0, '$x -> is_band(3)'); 486cmp_ok($x -> is_aband(3), '==', 0, '$x -> is_aband(3)'); 487cmp_ok($x -> is_band(4), '==', 0, '$x -> is_band(4)'); 488cmp_ok($x -> is_aband(4), '==', 0, '$x -> is_aband(4)'); 489cmp_ok($x -> is_triu(), '==', 1, '$x -> is_triu()'); 490cmp_ok($x -> is_striu(), '==', 0, '$x -> is_striu()'); 491cmp_ok($x -> is_tril(), '==', 1, '$x -> is_tril()'); 492cmp_ok($x -> is_stril(), '==', 0, '$x -> is_stril()'); 493cmp_ok($x -> is_atriu(), '==', 0, '$x -> is_atriu()'); 494cmp_ok($x -> is_satriu(), '==', 0, '$x -> is_satriu()'); 495cmp_ok($x -> is_atril(), '==', 0, '$x -> is_atril()'); 496cmp_ok($x -> is_satril(), '==', 0, '$x -> is_satril()'); 497 498# exchange 499 500note(<<'EOF'); 501$x = Math::Matrix -> new([[0, 0, 1], 502 [0, 1, 0], 503 [1, 0, 0]]); 504EOF 505 506$x = Math::Matrix -> new([[0, 0, 1], 507 [0, 1, 0], 508 [1, 0, 0]]); 509 510cmp_ok($x -> is_empty(), '==', 0, '$x -> is_empty()'); 511cmp_ok($x -> is_scalar(), '==', 0, '$x -> is_scalar()'); 512cmp_ok($x -> is_vector(), '==', 0, '$x -> is_vector()'); 513cmp_ok($x -> is_row(), '==', 0, '$x -> is_row()'); 514cmp_ok($x -> is_col(), '==', 0, '$x -> is_col()'); 515cmp_ok($x -> is_square(), '==', 1, '$x -> is_square()'); 516cmp_ok($x -> is_symmetric(), '==', 1, '$x -> is_symmetric()'); 517cmp_ok($x -> is_antisymmetric(), '==', 0, '$x -> is_antisymmetric()'); 518cmp_ok($x -> is_persymmetric(), '==', 1, '$x -> is_persymmetric()'); 519cmp_ok($x -> is_hankel(), '==', 0, '$x -> is_hankel()'); 520cmp_ok($x -> is_zero(), '==', 0, '$x -> is_zero()'); 521cmp_ok($x -> is_one(), '==', 0, '$x -> is_one()'); 522cmp_ok($x -> is_constant(), '==', 0, '$x -> is_constant()'); 523cmp_ok($x -> is_identity(), '==', 0, '$x -> is_identity()'); 524cmp_ok($x -> is_exchg(), '==', 1, '$x -> is_exchg()'); 525cmp_ok($x -> is_bool(), '==', 1, '$x -> is_bool()'); 526cmp_ok($x -> is_perm(), '==', 1, '$x -> is_perm()'); 527cmp_ok($x -> is_int(), '==', 1, '$x -> is_int()'); 528cmp_ok($x -> is_diag(), '==', 0, '$x -> is_diag()'); 529cmp_ok($x -> is_adiag(), '==', 1, '$x -> is_adiag()'); 530cmp_ok($x -> is_tridiag(), '==', 0, '$x -> is_tridiag()'); 531cmp_ok($x -> is_atridiag(), '==', 1, '$x -> is_atridiag()'); 532cmp_ok($x -> is_pentadiag(), '==', 1, '$x -> is_pentadiag()'); 533cmp_ok($x -> is_apentadiag(), '==', 1, '$x -> is_apentadiag()'); 534cmp_ok($x -> is_heptadiag(), '==', 0, '$x -> is_heptadiag()'); 535cmp_ok($x -> is_aheptadiag(), '==', 0, '$x -> is_aheptadiag()'); 536cmp_ok($x -> is_band(0), '==', 0, '$x -> is_band(0)'); 537cmp_ok($x -> is_aband(0), '==', 1, '$x -> is_aband(0)'); 538cmp_ok($x -> is_band(1), '==', 0, '$x -> is_band(1)'); 539cmp_ok($x -> is_aband(1), '==', 1, '$x -> is_aband(1)'); 540cmp_ok($x -> is_band(2), '==', 1, '$x -> is_band(2)'); 541cmp_ok($x -> is_aband(2), '==', 1, '$x -> is_aband(2)'); 542cmp_ok($x -> is_band(3), '==', 0, '$x -> is_band(3)'); 543cmp_ok($x -> is_aband(3), '==', 0, '$x -> is_aband(3)'); 544cmp_ok($x -> is_band(4), '==', 0, '$x -> is_band(4)'); 545cmp_ok($x -> is_aband(4), '==', 0, '$x -> is_aband(4)'); 546cmp_ok($x -> is_triu(), '==', 0, '$x -> is_triu()'); 547cmp_ok($x -> is_striu(), '==', 0, '$x -> is_striu()'); 548cmp_ok($x -> is_tril(), '==', 0, '$x -> is_tril()'); 549cmp_ok($x -> is_stril(), '==', 0, '$x -> is_stril()'); 550cmp_ok($x -> is_atriu(), '==', 1, '$x -> is_atriu()'); 551cmp_ok($x -> is_satriu(), '==', 0, '$x -> is_satriu()'); 552cmp_ok($x -> is_atril(), '==', 1, '$x -> is_atril()'); 553cmp_ok($x -> is_satril(), '==', 0, '$x -> is_satril()'); 554 555# permutation 556 557note(<<'EOF'); 558$x = Math::Matrix -> new([[0, 1, 0], 559 [0, 0, 1], 560 [1, 0, 0]]); 561EOF 562 563$x = Math::Matrix -> new([[0, 1, 0], 564 [0, 0, 1], 565 [1, 0, 0]]); 566 567cmp_ok($x -> is_empty(), '==', 0, '$x -> is_empty()'); 568cmp_ok($x -> is_scalar(), '==', 0, '$x -> is_scalar()'); 569cmp_ok($x -> is_vector(), '==', 0, '$x -> is_vector()'); 570cmp_ok($x -> is_row(), '==', 0, '$x -> is_row()'); 571cmp_ok($x -> is_col(), '==', 0, '$x -> is_col()'); 572cmp_ok($x -> is_square(), '==', 1, '$x -> is_square()'); 573cmp_ok($x -> is_symmetric(), '==', 0, '$x -> is_symmetric()'); 574cmp_ok($x -> is_antisymmetric(), '==', 0, '$x -> is_antisymmetric()'); 575cmp_ok($x -> is_persymmetric(), '==', 1, '$x -> is_persymmetric()'); 576cmp_ok($x -> is_hankel(), '==', 1, '$x -> is_hankel()'); 577cmp_ok($x -> is_zero(), '==', 0, '$x -> is_zero()'); 578cmp_ok($x -> is_one(), '==', 0, '$x -> is_one()'); 579cmp_ok($x -> is_constant(), '==', 0, '$x -> is_constant()'); 580cmp_ok($x -> is_identity(), '==', 0, '$x -> is_identity()'); 581cmp_ok($x -> is_exchg(), '==', 0, '$x -> is_exchg()'); 582cmp_ok($x -> is_bool(), '==', 1, '$x -> is_bool()'); 583cmp_ok($x -> is_perm(), '==', 1, '$x -> is_perm()'); 584cmp_ok($x -> is_int(), '==', 1, '$x -> is_int()'); 585cmp_ok($x -> is_diag(), '==', 0, '$x -> is_diag()'); 586cmp_ok($x -> is_adiag(), '==', 0, '$x -> is_adiag()'); 587cmp_ok($x -> is_tridiag(), '==', 0, '$x -> is_tridiag()'); 588cmp_ok($x -> is_atridiag(), '==', 1, '$x -> is_atridiag()'); 589cmp_ok($x -> is_pentadiag(), '==', 1, '$x -> is_pentadiag()'); 590cmp_ok($x -> is_apentadiag(), '==', 1, '$x -> is_apentadiag()'); 591cmp_ok($x -> is_heptadiag(), '==', 0, '$x -> is_heptadiag()'); 592cmp_ok($x -> is_aheptadiag(), '==', 0, '$x -> is_aheptadiag()'); 593cmp_ok($x -> is_band(0), '==', 0, '$x -> is_band(0)'); 594cmp_ok($x -> is_aband(0), '==', 0, '$x -> is_aband(0)'); 595cmp_ok($x -> is_band(1), '==', 0, '$x -> is_band(1)'); 596cmp_ok($x -> is_aband(1), '==', 1, '$x -> is_aband(1)'); 597cmp_ok($x -> is_band(2), '==', 1, '$x -> is_band(2)'); 598cmp_ok($x -> is_aband(2), '==', 1, '$x -> is_aband(2)'); 599cmp_ok($x -> is_band(3), '==', 0, '$x -> is_band(3)'); 600cmp_ok($x -> is_aband(3), '==', 0, '$x -> is_aband(3)'); 601cmp_ok($x -> is_band(4), '==', 0, '$x -> is_band(4)'); 602cmp_ok($x -> is_aband(4), '==', 0, '$x -> is_aband(4)'); 603cmp_ok($x -> is_triu(), '==', 0, '$x -> is_triu()'); 604cmp_ok($x -> is_striu(), '==', 0, '$x -> is_striu()'); 605cmp_ok($x -> is_tril(), '==', 0, '$x -> is_tril()'); 606cmp_ok($x -> is_stril(), '==', 0, '$x -> is_stril()'); 607cmp_ok($x -> is_atriu(), '==', 0, '$x -> is_atriu()'); 608cmp_ok($x -> is_satriu(), '==', 0, '$x -> is_satriu()'); 609cmp_ok($x -> is_atril(), '==', 0, '$x -> is_atril()'); 610cmp_ok($x -> is_satril(), '==', 0, '$x -> is_satril()'); 611 612# upper triangular 613 614note(<<'EOF'); 615$x = Math::Matrix -> new([[1, 2, 3], 616 [0, 5, 6], 617 [0, 0, 9]]); 618EOF 619 620$x = Math::Matrix -> new([[1, 2, 3], 621 [0, 5, 6], 622 [0, 0, 9]]); 623 624cmp_ok($x -> is_empty(), '==', 0, '$x -> is_empty()'); 625cmp_ok($x -> is_scalar(), '==', 0, '$x -> is_scalar()'); 626cmp_ok($x -> is_vector(), '==', 0, '$x -> is_vector()'); 627cmp_ok($x -> is_row(), '==', 0, '$x -> is_row()'); 628cmp_ok($x -> is_col(), '==', 0, '$x -> is_col()'); 629cmp_ok($x -> is_square(), '==', 1, '$x -> is_square()'); 630cmp_ok($x -> is_symmetric(), '==', 0, '$x -> is_symmetric()'); 631cmp_ok($x -> is_antisymmetric(), '==', 0, '$x -> is_antisymmetric()'); 632cmp_ok($x -> is_persymmetric(), '==', 0, '$x -> is_persymmetric()'); 633cmp_ok($x -> is_hankel(), '==', 0, '$x -> is_hankel()'); 634cmp_ok($x -> is_zero(), '==', 0, '$x -> is_zero()'); 635cmp_ok($x -> is_one(), '==', 0, '$x -> is_one()'); 636cmp_ok($x -> is_constant(), '==', 0, '$x -> is_constant()'); 637cmp_ok($x -> is_identity(), '==', 0, '$x -> is_identity()'); 638cmp_ok($x -> is_exchg(), '==', 0, '$x -> is_exchg()'); 639cmp_ok($x -> is_bool(), '==', 0, '$x -> is_bool()'); 640cmp_ok($x -> is_perm(), '==', 0, '$x -> is_perm()'); 641cmp_ok($x -> is_int(), '==', 1, '$x -> is_int()'); 642cmp_ok($x -> is_diag(), '==', 0, '$x -> is_diag()'); 643cmp_ok($x -> is_adiag(), '==', 0, '$x -> is_adiag()'); 644cmp_ok($x -> is_tridiag(), '==', 0, '$x -> is_tridiag()'); 645cmp_ok($x -> is_atridiag(), '==', 0, '$x -> is_atridiag()'); 646cmp_ok($x -> is_pentadiag(), '==', 1, '$x -> is_pentadiag()'); 647cmp_ok($x -> is_apentadiag(), '==', 1, '$x -> is_apentadiag()'); 648cmp_ok($x -> is_heptadiag(), '==', 0, '$x -> is_heptadiag()'); 649cmp_ok($x -> is_aheptadiag(), '==', 0, '$x -> is_aheptadiag()'); 650cmp_ok($x -> is_band(0), '==', 0, '$x -> is_band(0)'); 651cmp_ok($x -> is_aband(0), '==', 0, '$x -> is_aband(0)'); 652cmp_ok($x -> is_band(1), '==', 0, '$x -> is_band(1)'); 653cmp_ok($x -> is_aband(1), '==', 0, '$x -> is_aband(1)'); 654cmp_ok($x -> is_band(2), '==', 1, '$x -> is_band(2)'); 655cmp_ok($x -> is_aband(2), '==', 1, '$x -> is_aband(2)'); 656cmp_ok($x -> is_band(3), '==', 0, '$x -> is_band(3)'); 657cmp_ok($x -> is_aband(3), '==', 0, '$x -> is_aband(3)'); 658cmp_ok($x -> is_band(4), '==', 0, '$x -> is_band(4)'); 659cmp_ok($x -> is_aband(4), '==', 0, '$x -> is_aband(4)'); 660cmp_ok($x -> is_triu(), '==', 1, '$x -> is_triu()'); 661cmp_ok($x -> is_striu(), '==', 0, '$x -> is_striu()'); 662cmp_ok($x -> is_tril(), '==', 0, '$x -> is_tril()'); 663cmp_ok($x -> is_stril(), '==', 0, '$x -> is_stril()'); 664cmp_ok($x -> is_atriu(), '==', 0, '$x -> is_atriu()'); 665cmp_ok($x -> is_satriu(), '==', 0, '$x -> is_satriu()'); 666cmp_ok($x -> is_atril(), '==', 0, '$x -> is_atril()'); 667cmp_ok($x -> is_satril(), '==', 0, '$x -> is_satril()'); 668 669# strictly upper triangular 670 671note(<<'EOF'); 672$x = Math::Matrix -> new([[0, 2, 3], 673 [0, 0, 6], 674 [0, 0, 0]]); 675EOF 676 677$x = Math::Matrix -> new([[0, 2, 3], 678 [0, 0, 6], 679 [0, 0, 0]]); 680 681cmp_ok($x -> is_empty(), '==', 0, '$x -> is_empty()'); 682cmp_ok($x -> is_scalar(), '==', 0, '$x -> is_scalar()'); 683cmp_ok($x -> is_vector(), '==', 0, '$x -> is_vector()'); 684cmp_ok($x -> is_row(), '==', 0, '$x -> is_row()'); 685cmp_ok($x -> is_col(), '==', 0, '$x -> is_col()'); 686cmp_ok($x -> is_square(), '==', 1, '$x -> is_square()'); 687cmp_ok($x -> is_symmetric(), '==', 0, '$x -> is_symmetric()'); 688cmp_ok($x -> is_antisymmetric(), '==', 0, '$x -> is_antisymmetric()'); 689cmp_ok($x -> is_persymmetric(), '==', 0, '$x -> is_persymmetric()'); 690cmp_ok($x -> is_hankel(), '==', 0, '$x -> is_hankel()'); 691cmp_ok($x -> is_zero(), '==', 0, '$x -> is_zero()'); 692cmp_ok($x -> is_one(), '==', 0, '$x -> is_one()'); 693cmp_ok($x -> is_constant(), '==', 0, '$x -> is_constant()'); 694cmp_ok($x -> is_identity(), '==', 0, '$x -> is_identity()'); 695cmp_ok($x -> is_exchg(), '==', 0, '$x -> is_exchg()'); 696cmp_ok($x -> is_bool(), '==', 0, '$x -> is_bool()'); 697cmp_ok($x -> is_perm(), '==', 0, '$x -> is_perm()'); 698cmp_ok($x -> is_int(), '==', 1, '$x -> is_int()'); 699cmp_ok($x -> is_diag(), '==', 0, '$x -> is_diag()'); 700cmp_ok($x -> is_adiag(), '==', 0, '$x -> is_adiag()'); 701cmp_ok($x -> is_tridiag(), '==', 0, '$x -> is_tridiag()'); 702cmp_ok($x -> is_atridiag(), '==', 1, '$x -> is_atridiag()'); 703cmp_ok($x -> is_pentadiag(), '==', 1, '$x -> is_pentadiag()'); 704cmp_ok($x -> is_apentadiag(), '==', 1, '$x -> is_apentadiag()'); 705cmp_ok($x -> is_heptadiag(), '==', 0, '$x -> is_heptadiag()'); 706cmp_ok($x -> is_aheptadiag(), '==', 0, '$x -> is_aheptadiag()'); 707cmp_ok($x -> is_band(0), '==', 0, '$x -> is_band(0)'); 708cmp_ok($x -> is_aband(0), '==', 0, '$x -> is_aband(0)'); 709cmp_ok($x -> is_band(1), '==', 0, '$x -> is_band(1)'); 710cmp_ok($x -> is_aband(1), '==', 1, '$x -> is_aband(1)'); 711cmp_ok($x -> is_band(2), '==', 1, '$x -> is_band(2)'); 712cmp_ok($x -> is_aband(2), '==', 1, '$x -> is_aband(2)'); 713cmp_ok($x -> is_band(3), '==', 0, '$x -> is_band(3)'); 714cmp_ok($x -> is_aband(3), '==', 0, '$x -> is_aband(3)'); 715cmp_ok($x -> is_band(4), '==', 0, '$x -> is_band(4)'); 716cmp_ok($x -> is_aband(4), '==', 0, '$x -> is_aband(4)'); 717cmp_ok($x -> is_triu(), '==', 1, '$x -> is_triu()'); 718cmp_ok($x -> is_striu(), '==', 1, '$x -> is_striu()'); 719cmp_ok($x -> is_tril(), '==', 0, '$x -> is_tril()'); 720cmp_ok($x -> is_stril(), '==', 0, '$x -> is_stril()'); 721cmp_ok($x -> is_atriu(), '==', 0, '$x -> is_atriu()'); 722cmp_ok($x -> is_satriu(), '==', 0, '$x -> is_satriu()'); 723cmp_ok($x -> is_atril(), '==', 0, '$x -> is_atril()'); 724cmp_ok($x -> is_satril(), '==', 0, '$x -> is_satril()'); 725 726# lower triangular 727 728note(<<'EOF'); 729$x = Math::Matrix -> new([[1, 0, 0], 730 [4, 5, 0], 731 [7, 8, 9]]); 732EOF 733 734$x = Math::Matrix -> new([[1, 0, 0], 735 [4, 5, 0], 736 [7, 8, 9]]); 737 738cmp_ok($x -> is_empty(), '==', 0, '$x -> is_empty()'); 739cmp_ok($x -> is_scalar(), '==', 0, '$x -> is_scalar()'); 740cmp_ok($x -> is_vector(), '==', 0, '$x -> is_vector()'); 741cmp_ok($x -> is_row(), '==', 0, '$x -> is_row()'); 742cmp_ok($x -> is_col(), '==', 0, '$x -> is_col()'); 743cmp_ok($x -> is_square(), '==', 1, '$x -> is_square()'); 744cmp_ok($x -> is_symmetric(), '==', 0, '$x -> is_symmetric()'); 745cmp_ok($x -> is_antisymmetric(), '==', 0, '$x -> is_antisymmetric()'); 746cmp_ok($x -> is_persymmetric(), '==', 0, '$x -> is_persymmetric()'); 747cmp_ok($x -> is_hankel(), '==', 0, '$x -> is_hankel()'); 748cmp_ok($x -> is_zero(), '==', 0, '$x -> is_zero()'); 749cmp_ok($x -> is_one(), '==', 0, '$x -> is_one()'); 750cmp_ok($x -> is_constant(), '==', 0, '$x -> is_constant()'); 751cmp_ok($x -> is_identity(), '==', 0, '$x -> is_identity()'); 752cmp_ok($x -> is_exchg(), '==', 0, '$x -> is_exchg()'); 753cmp_ok($x -> is_bool(), '==', 0, '$x -> is_bool()'); 754cmp_ok($x -> is_perm(), '==', 0, '$x -> is_perm()'); 755cmp_ok($x -> is_int(), '==', 1, '$x -> is_int()'); 756cmp_ok($x -> is_diag(), '==', 0, '$x -> is_diag()'); 757cmp_ok($x -> is_adiag(), '==', 0, '$x -> is_adiag()'); 758cmp_ok($x -> is_tridiag(), '==', 0, '$x -> is_tridiag()'); 759cmp_ok($x -> is_atridiag(), '==', 0, '$x -> is_atridiag()'); 760cmp_ok($x -> is_pentadiag(), '==', 1, '$x -> is_pentadiag()'); 761cmp_ok($x -> is_apentadiag(), '==', 1, '$x -> is_apentadiag()'); 762cmp_ok($x -> is_heptadiag(), '==', 0, '$x -> is_heptadiag()'); 763cmp_ok($x -> is_aheptadiag(), '==', 0, '$x -> is_aheptadiag()'); 764cmp_ok($x -> is_band(0), '==', 0, '$x -> is_band(0)'); 765cmp_ok($x -> is_aband(0), '==', 0, '$x -> is_aband(0)'); 766cmp_ok($x -> is_band(1), '==', 0, '$x -> is_band(1)'); 767cmp_ok($x -> is_aband(1), '==', 0, '$x -> is_aband(1)'); 768cmp_ok($x -> is_band(2), '==', 1, '$x -> is_band(2)'); 769cmp_ok($x -> is_aband(2), '==', 1, '$x -> is_aband(2)'); 770cmp_ok($x -> is_band(3), '==', 0, '$x -> is_band(3)'); 771cmp_ok($x -> is_aband(3), '==', 0, '$x -> is_aband(3)'); 772cmp_ok($x -> is_band(4), '==', 0, '$x -> is_band(4)'); 773cmp_ok($x -> is_aband(4), '==', 0, '$x -> is_aband(4)'); 774cmp_ok($x -> is_triu(), '==', 0, '$x -> is_triu()'); 775cmp_ok($x -> is_striu(), '==', 0, '$x -> is_striu()'); 776cmp_ok($x -> is_tril(), '==', 1, '$x -> is_tril()'); 777cmp_ok($x -> is_stril(), '==', 0, '$x -> is_stril()'); 778cmp_ok($x -> is_atriu(), '==', 0, '$x -> is_atriu()'); 779cmp_ok($x -> is_satriu(), '==', 0, '$x -> is_satriu()'); 780cmp_ok($x -> is_atril(), '==', 0, '$x -> is_atril()'); 781cmp_ok($x -> is_satril(), '==', 0, '$x -> is_satril()'); 782 783# strictly lower triangular 784 785note(<<'EOF'); 786$x = Math::Matrix -> new([[0, 0, 0], 787 [4, 0, 0], 788 [7, 8, 0]]); 789EOF 790 791$x = Math::Matrix -> new([[0, 0, 0], 792 [4, 0, 0], 793 [7, 8, 0]]); 794 795cmp_ok($x -> is_empty(), '==', 0, '$x -> is_empty()'); 796cmp_ok($x -> is_scalar(), '==', 0, '$x -> is_scalar()'); 797cmp_ok($x -> is_vector(), '==', 0, '$x -> is_vector()'); 798cmp_ok($x -> is_row(), '==', 0, '$x -> is_row()'); 799cmp_ok($x -> is_col(), '==', 0, '$x -> is_col()'); 800cmp_ok($x -> is_square(), '==', 1, '$x -> is_square()'); 801cmp_ok($x -> is_symmetric(), '==', 0, '$x -> is_symmetric()'); 802cmp_ok($x -> is_antisymmetric(), '==', 0, '$x -> is_antisymmetric()'); 803cmp_ok($x -> is_persymmetric(), '==', 0, '$x -> is_persymmetric()'); 804cmp_ok($x -> is_hankel(), '==', 0, '$x -> is_hankel()'); 805cmp_ok($x -> is_zero(), '==', 0, '$x -> is_zero()'); 806cmp_ok($x -> is_one(), '==', 0, '$x -> is_one()'); 807cmp_ok($x -> is_constant(), '==', 0, '$x -> is_constant()'); 808cmp_ok($x -> is_identity(), '==', 0, '$x -> is_identity()'); 809cmp_ok($x -> is_exchg(), '==', 0, '$x -> is_exchg()'); 810cmp_ok($x -> is_bool(), '==', 0, '$x -> is_bool()'); 811cmp_ok($x -> is_perm(), '==', 0, '$x -> is_perm()'); 812cmp_ok($x -> is_int(), '==', 1, '$x -> is_int()'); 813cmp_ok($x -> is_diag(), '==', 0, '$x -> is_diag()'); 814cmp_ok($x -> is_adiag(), '==', 0, '$x -> is_adiag()'); 815cmp_ok($x -> is_tridiag(), '==', 0, '$x -> is_tridiag()'); 816cmp_ok($x -> is_atridiag(), '==', 1, '$x -> is_atridiag()'); 817cmp_ok($x -> is_pentadiag(), '==', 1, '$x -> is_pentadiag()'); 818cmp_ok($x -> is_apentadiag(), '==', 1, '$x -> is_apentadiag()'); 819cmp_ok($x -> is_heptadiag(), '==', 0, '$x -> is_heptadiag()'); 820cmp_ok($x -> is_aheptadiag(), '==', 0, '$x -> is_aheptadiag()'); 821cmp_ok($x -> is_band(0), '==', 0, '$x -> is_band(0)'); 822cmp_ok($x -> is_aband(0), '==', 0, '$x -> is_aband(0)'); 823cmp_ok($x -> is_band(1), '==', 0, '$x -> is_band(1)'); 824cmp_ok($x -> is_aband(1), '==', 1, '$x -> is_aband(1)'); 825cmp_ok($x -> is_band(2), '==', 1, '$x -> is_band(2)'); 826cmp_ok($x -> is_aband(2), '==', 1, '$x -> is_aband(2)'); 827cmp_ok($x -> is_band(3), '==', 0, '$x -> is_band(3)'); 828cmp_ok($x -> is_aband(3), '==', 0, '$x -> is_aband(3)'); 829cmp_ok($x -> is_band(4), '==', 0, '$x -> is_band(4)'); 830cmp_ok($x -> is_aband(4), '==', 0, '$x -> is_aband(4)'); 831cmp_ok($x -> is_triu(), '==', 0, '$x -> is_triu()'); 832cmp_ok($x -> is_striu(), '==', 0, '$x -> is_striu()'); 833cmp_ok($x -> is_tril(), '==', 1, '$x -> is_tril()'); 834cmp_ok($x -> is_stril(), '==', 1, '$x -> is_stril()'); 835cmp_ok($x -> is_atriu(), '==', 0, '$x -> is_atriu()'); 836cmp_ok($x -> is_satriu(), '==', 0, '$x -> is_satriu()'); 837cmp_ok($x -> is_atril(), '==', 0, '$x -> is_atril()'); 838cmp_ok($x -> is_satril(), '==', 0, '$x -> is_satril()'); 839 840# upper anti-triangular 841 842note(<<'EOF'); 843$x = Math::Matrix -> new([[1, 2, 3], 844 [4, 5, 0], 845 [7, 0, 0]]); 846EOF 847 848$x = Math::Matrix -> new([[1, 2, 3], 849 [4, 5, 0], 850 [7, 0, 0]]); 851 852cmp_ok($x -> is_empty(), '==', 0, '$x -> is_empty()'); 853cmp_ok($x -> is_scalar(), '==', 0, '$x -> is_scalar()'); 854cmp_ok($x -> is_vector(), '==', 0, '$x -> is_vector()'); 855cmp_ok($x -> is_row(), '==', 0, '$x -> is_row()'); 856cmp_ok($x -> is_col(), '==', 0, '$x -> is_col()'); 857cmp_ok($x -> is_square(), '==', 1, '$x -> is_square()'); 858cmp_ok($x -> is_symmetric(), '==', 0, '$x -> is_symmetric()'); 859cmp_ok($x -> is_antisymmetric(), '==', 0, '$x -> is_antisymmetric()'); 860cmp_ok($x -> is_persymmetric(), '==', 0, '$x -> is_persymmetric()'); 861cmp_ok($x -> is_hankel(), '==', 0, '$x -> is_hankel()'); 862cmp_ok($x -> is_zero(), '==', 0, '$x -> is_zero()'); 863cmp_ok($x -> is_one(), '==', 0, '$x -> is_one()'); 864cmp_ok($x -> is_constant(), '==', 0, '$x -> is_constant()'); 865cmp_ok($x -> is_identity(), '==', 0, '$x -> is_identity()'); 866cmp_ok($x -> is_exchg(), '==', 0, '$x -> is_exchg()'); 867cmp_ok($x -> is_bool(), '==', 0, '$x -> is_bool()'); 868cmp_ok($x -> is_perm(), '==', 0, '$x -> is_perm()'); 869cmp_ok($x -> is_int(), '==', 1, '$x -> is_int()'); 870cmp_ok($x -> is_diag(), '==', 0, '$x -> is_diag()'); 871cmp_ok($x -> is_adiag(), '==', 0, '$x -> is_adiag()'); 872cmp_ok($x -> is_tridiag(), '==', 0, '$x -> is_tridiag()'); 873cmp_ok($x -> is_atridiag(), '==', 0, '$x -> is_atridiag()'); 874cmp_ok($x -> is_pentadiag(), '==', 1, '$x -> is_pentadiag()'); 875cmp_ok($x -> is_apentadiag(), '==', 1, '$x -> is_apentadiag()'); 876cmp_ok($x -> is_heptadiag(), '==', 0, '$x -> is_heptadiag()'); 877cmp_ok($x -> is_aheptadiag(), '==', 0, '$x -> is_aheptadiag()'); 878cmp_ok($x -> is_band(0), '==', 0, '$x -> is_band(0)'); 879cmp_ok($x -> is_aband(0), '==', 0, '$x -> is_aband(0)'); 880cmp_ok($x -> is_band(1), '==', 0, '$x -> is_band(1)'); 881cmp_ok($x -> is_aband(1), '==', 0, '$x -> is_aband(1)'); 882cmp_ok($x -> is_band(2), '==', 1, '$x -> is_band(2)'); 883cmp_ok($x -> is_aband(2), '==', 1, '$x -> is_aband(2)'); 884cmp_ok($x -> is_band(3), '==', 0, '$x -> is_band(3)'); 885cmp_ok($x -> is_aband(3), '==', 0, '$x -> is_aband(3)'); 886cmp_ok($x -> is_band(4), '==', 0, '$x -> is_band(4)'); 887cmp_ok($x -> is_aband(4), '==', 0, '$x -> is_aband(4)'); 888cmp_ok($x -> is_triu(), '==', 0, '$x -> is_triu()'); 889cmp_ok($x -> is_striu(), '==', 0, '$x -> is_striu()'); 890cmp_ok($x -> is_tril(), '==', 0, '$x -> is_tril()'); 891cmp_ok($x -> is_stril(), '==', 0, '$x -> is_stril()'); 892cmp_ok($x -> is_atriu(), '==', 1, '$x -> is_atriu()'); 893cmp_ok($x -> is_satriu(), '==', 0, '$x -> is_satriu()'); 894cmp_ok($x -> is_atril(), '==', 0, '$x -> is_atril()'); 895cmp_ok($x -> is_satril(), '==', 0, '$x -> is_satril()'); 896 897# strictly upper anti-triangular 898 899note(<<'EOF'); 900$x = Math::Matrix -> new([[1, 2, 0], 901 [4, 0, 0], 902 [0, 0, 0]]); 903EOF 904 905$x = Math::Matrix -> new([[1, 2, 0], 906 [4, 0, 0], 907 [0, 0, 0]]); 908 909cmp_ok($x -> is_empty(), '==', 0, '$x -> is_empty()'); 910cmp_ok($x -> is_scalar(), '==', 0, '$x -> is_scalar()'); 911cmp_ok($x -> is_vector(), '==', 0, '$x -> is_vector()'); 912cmp_ok($x -> is_row(), '==', 0, '$x -> is_row()'); 913cmp_ok($x -> is_col(), '==', 0, '$x -> is_col()'); 914cmp_ok($x -> is_square(), '==', 1, '$x -> is_square()'); 915cmp_ok($x -> is_symmetric(), '==', 0, '$x -> is_symmetric()'); 916cmp_ok($x -> is_antisymmetric(), '==', 0, '$x -> is_antisymmetric()'); 917cmp_ok($x -> is_persymmetric(), '==', 0, '$x -> is_persymmetric()'); 918cmp_ok($x -> is_hankel(), '==', 0, '$x -> is_hankel()'); 919cmp_ok($x -> is_zero(), '==', 0, '$x -> is_zero()'); 920cmp_ok($x -> is_one(), '==', 0, '$x -> is_one()'); 921cmp_ok($x -> is_constant(), '==', 0, '$x -> is_constant()'); 922cmp_ok($x -> is_identity(), '==', 0, '$x -> is_identity()'); 923cmp_ok($x -> is_exchg(), '==', 0, '$x -> is_exchg()'); 924cmp_ok($x -> is_bool(), '==', 0, '$x -> is_bool()'); 925cmp_ok($x -> is_perm(), '==', 0, '$x -> is_perm()'); 926cmp_ok($x -> is_int(), '==', 1, '$x -> is_int()'); 927cmp_ok($x -> is_diag(), '==', 0, '$x -> is_diag()'); 928cmp_ok($x -> is_adiag(), '==', 0, '$x -> is_adiag()'); 929cmp_ok($x -> is_tridiag(), '==', 1, '$x -> is_tridiag()'); 930cmp_ok($x -> is_atridiag(), '==', 0, '$x -> is_atridiag()'); 931cmp_ok($x -> is_pentadiag(), '==', 1, '$x -> is_pentadiag()'); 932cmp_ok($x -> is_apentadiag(), '==', 1, '$x -> is_apentadiag()'); 933cmp_ok($x -> is_heptadiag(), '==', 0, '$x -> is_heptadiag()'); 934cmp_ok($x -> is_aheptadiag(), '==', 0, '$x -> is_aheptadiag()'); 935cmp_ok($x -> is_band(0), '==', 0, '$x -> is_band(0)'); 936cmp_ok($x -> is_aband(0), '==', 0, '$x -> is_aband(0)'); 937cmp_ok($x -> is_band(1), '==', 1, '$x -> is_band(1)'); 938cmp_ok($x -> is_aband(1), '==', 0, '$x -> is_aband(1)'); 939cmp_ok($x -> is_band(2), '==', 1, '$x -> is_band(2)'); 940cmp_ok($x -> is_aband(2), '==', 1, '$x -> is_aband(2)'); 941cmp_ok($x -> is_band(3), '==', 0, '$x -> is_band(3)'); 942cmp_ok($x -> is_aband(3), '==', 0, '$x -> is_aband(3)'); 943cmp_ok($x -> is_band(4), '==', 0, '$x -> is_band(4)'); 944cmp_ok($x -> is_aband(4), '==', 0, '$x -> is_aband(4)'); 945cmp_ok($x -> is_triu(), '==', 0, '$x -> is_triu()'); 946cmp_ok($x -> is_striu(), '==', 0, '$x -> is_striu()'); 947cmp_ok($x -> is_tril(), '==', 0, '$x -> is_tril()'); 948cmp_ok($x -> is_stril(), '==', 0, '$x -> is_stril()'); 949cmp_ok($x -> is_atriu(), '==', 1, '$x -> is_atriu()'); 950cmp_ok($x -> is_satriu(), '==', 1, '$x -> is_satriu()'); 951cmp_ok($x -> is_atril(), '==', 0, '$x -> is_atril()'); 952cmp_ok($x -> is_satril(), '==', 0, '$x -> is_satril()'); 953 954# lower anti-triangular 955 956note(<<'EOF'); 957$x = Math::Matrix -> new([[0, 0, 3], 958 [0, 5, 6], 959 [7, 8, 9]]); 960EOF 961 962$x = Math::Matrix -> new([[0, 0, 3], 963 [0, 5, 6], 964 [7, 8, 9]]); 965 966cmp_ok($x -> is_empty(), '==', 0, '$x -> is_empty()'); 967cmp_ok($x -> is_scalar(), '==', 0, '$x -> is_scalar()'); 968cmp_ok($x -> is_vector(), '==', 0, '$x -> is_vector()'); 969cmp_ok($x -> is_row(), '==', 0, '$x -> is_row()'); 970cmp_ok($x -> is_col(), '==', 0, '$x -> is_col()'); 971cmp_ok($x -> is_square(), '==', 1, '$x -> is_square()'); 972cmp_ok($x -> is_symmetric(), '==', 0, '$x -> is_symmetric()'); 973cmp_ok($x -> is_antisymmetric(), '==', 0, '$x -> is_antisymmetric()'); 974cmp_ok($x -> is_persymmetric(), '==', 0, '$x -> is_persymmetric()'); 975cmp_ok($x -> is_hankel(), '==', 0, '$x -> is_hankel()'); 976cmp_ok($x -> is_zero(), '==', 0, '$x -> is_zero()'); 977cmp_ok($x -> is_one(), '==', 0, '$x -> is_one()'); 978cmp_ok($x -> is_constant(), '==', 0, '$x -> is_constant()'); 979cmp_ok($x -> is_identity(), '==', 0, '$x -> is_identity()'); 980cmp_ok($x -> is_exchg(), '==', 0, '$x -> is_exchg()'); 981cmp_ok($x -> is_bool(), '==', 0, '$x -> is_bool()'); 982cmp_ok($x -> is_perm(), '==', 0, '$x -> is_perm()'); 983cmp_ok($x -> is_int(), '==', 1, '$x -> is_int()'); 984cmp_ok($x -> is_diag(), '==', 0, '$x -> is_diag()'); 985cmp_ok($x -> is_adiag(), '==', 0, '$x -> is_adiag()'); 986cmp_ok($x -> is_tridiag(), '==', 0, '$x -> is_tridiag()'); 987cmp_ok($x -> is_atridiag(), '==', 0, '$x -> is_atridiag()'); 988cmp_ok($x -> is_pentadiag(), '==', 1, '$x -> is_pentadiag()'); 989cmp_ok($x -> is_apentadiag(), '==', 1, '$x -> is_apentadiag()'); 990cmp_ok($x -> is_heptadiag(), '==', 0, '$x -> is_heptadiag()'); 991cmp_ok($x -> is_aheptadiag(), '==', 0, '$x -> is_aheptadiag()'); 992cmp_ok($x -> is_band(0), '==', 0, '$x -> is_band(0)'); 993cmp_ok($x -> is_aband(0), '==', 0, '$x -> is_aband(0)'); 994cmp_ok($x -> is_band(1), '==', 0, '$x -> is_band(1)'); 995cmp_ok($x -> is_aband(1), '==', 0, '$x -> is_aband(1)'); 996cmp_ok($x -> is_band(2), '==', 1, '$x -> is_band(2)'); 997cmp_ok($x -> is_aband(2), '==', 1, '$x -> is_aband(2)'); 998cmp_ok($x -> is_band(3), '==', 0, '$x -> is_band(3)'); 999cmp_ok($x -> is_aband(3), '==', 0, '$x -> is_aband(3)'); 1000cmp_ok($x -> is_band(4), '==', 0, '$x -> is_band(4)'); 1001cmp_ok($x -> is_aband(4), '==', 0, '$x -> is_aband(4)'); 1002cmp_ok($x -> is_triu(), '==', 0, '$x -> is_triu()'); 1003cmp_ok($x -> is_striu(), '==', 0, '$x -> is_striu()'); 1004cmp_ok($x -> is_tril(), '==', 0, '$x -> is_tril()'); 1005cmp_ok($x -> is_stril(), '==', 0, '$x -> is_stril()'); 1006cmp_ok($x -> is_atriu(), '==', 0, '$x -> is_atriu()'); 1007cmp_ok($x -> is_satriu(), '==', 0, '$x -> is_satriu()'); 1008cmp_ok($x -> is_atril(), '==', 1, '$x -> is_atril()'); 1009cmp_ok($x -> is_satril(), '==', 0, '$x -> is_satril()'); 1010 1011# strictly lower anti-triangular 1012 1013note(<<'EOF'); 1014$x = Math::Matrix -> new([[0, 0, 0], 1015 [0, 0, 6], 1016 [0, 8, 9]]); 1017EOF 1018 1019$x = Math::Matrix -> new([[0, 0, 0], 1020 [0, 0, 6], 1021 [0, 8, 9]]); 1022 1023cmp_ok($x -> is_empty(), '==', 0, '$x -> is_empty()'); 1024cmp_ok($x -> is_scalar(), '==', 0, '$x -> is_scalar()'); 1025cmp_ok($x -> is_vector(), '==', 0, '$x -> is_vector()'); 1026cmp_ok($x -> is_row(), '==', 0, '$x -> is_row()'); 1027cmp_ok($x -> is_col(), '==', 0, '$x -> is_col()'); 1028cmp_ok($x -> is_square(), '==', 1, '$x -> is_square()'); 1029cmp_ok($x -> is_symmetric(), '==', 0, '$x -> is_symmetric()'); 1030cmp_ok($x -> is_antisymmetric(), '==', 0, '$x -> is_antisymmetric()'); 1031cmp_ok($x -> is_persymmetric(), '==', 0, '$x -> is_persymmetric()'); 1032cmp_ok($x -> is_hankel(), '==', 0, '$x -> is_hankel()'); 1033cmp_ok($x -> is_zero(), '==', 0, '$x -> is_zero()'); 1034cmp_ok($x -> is_one(), '==', 0, '$x -> is_one()'); 1035cmp_ok($x -> is_constant(), '==', 0, '$x -> is_constant()'); 1036cmp_ok($x -> is_identity(), '==', 0, '$x -> is_identity()'); 1037cmp_ok($x -> is_exchg(), '==', 0, '$x -> is_exchg()'); 1038cmp_ok($x -> is_bool(), '==', 0, '$x -> is_bool()'); 1039cmp_ok($x -> is_perm(), '==', 0, '$x -> is_perm()'); 1040cmp_ok($x -> is_int(), '==', 1, '$x -> is_int()'); 1041cmp_ok($x -> is_diag(), '==', 0, '$x -> is_diag()'); 1042cmp_ok($x -> is_adiag(), '==', 0, '$x -> is_adiag()'); 1043cmp_ok($x -> is_tridiag(), '==', 1, '$x -> is_tridiag()'); 1044cmp_ok($x -> is_atridiag(), '==', 0, '$x -> is_atridiag()'); 1045cmp_ok($x -> is_pentadiag(), '==', 1, '$x -> is_pentadiag()'); 1046cmp_ok($x -> is_apentadiag(), '==', 1, '$x -> is_apentadiag()'); 1047cmp_ok($x -> is_heptadiag(), '==', 0, '$x -> is_heptadiag()'); 1048cmp_ok($x -> is_aheptadiag(), '==', 0, '$x -> is_aheptadiag()'); 1049cmp_ok($x -> is_band(0), '==', 0, '$x -> is_band(0)'); 1050cmp_ok($x -> is_aband(0), '==', 0, '$x -> is_aband(0)'); 1051cmp_ok($x -> is_band(1), '==', 1, '$x -> is_band(1)'); 1052cmp_ok($x -> is_aband(1), '==', 0, '$x -> is_aband(1)'); 1053cmp_ok($x -> is_band(2), '==', 1, '$x -> is_band(2)'); 1054cmp_ok($x -> is_aband(2), '==', 1, '$x -> is_aband(2)'); 1055cmp_ok($x -> is_band(3), '==', 0, '$x -> is_band(3)'); 1056cmp_ok($x -> is_aband(3), '==', 0, '$x -> is_aband(3)'); 1057cmp_ok($x -> is_band(4), '==', 0, '$x -> is_band(4)'); 1058cmp_ok($x -> is_aband(4), '==', 0, '$x -> is_aband(4)'); 1059cmp_ok($x -> is_triu(), '==', 0, '$x -> is_triu()'); 1060cmp_ok($x -> is_striu(), '==', 0, '$x -> is_striu()'); 1061cmp_ok($x -> is_tril(), '==', 0, '$x -> is_tril()'); 1062cmp_ok($x -> is_stril(), '==', 0, '$x -> is_stril()'); 1063cmp_ok($x -> is_atriu(), '==', 0, '$x -> is_atriu()'); 1064cmp_ok($x -> is_satriu(), '==', 0, '$x -> is_satriu()'); 1065cmp_ok($x -> is_atril(), '==', 1, '$x -> is_atril()'); 1066cmp_ok($x -> is_satril(), '==', 1, '$x -> is_satril()'); 1067 1068# tridiagonal 1069 1070note(<<'EOF'); 1071$x = Math::Matrix -> new([[7, 7, 0, 0, 0, 0], 1072 [7, 7, 7, 0, 0, 0], 1073 [0, 7, 7, 7, 0, 0], 1074 [0, 0, 7, 7, 7, 0], 1075 [0, 0, 0, 7, 7, 7], 1076 [0, 0, 0, 0, 7, 7]]); 1077EOF 1078 1079$x = Math::Matrix -> new([[7, 7, 0, 0, 0, 0], 1080 [7, 7, 7, 0, 0, 0], 1081 [0, 7, 7, 7, 0, 0], 1082 [0, 0, 7, 7, 7, 0], 1083 [0, 0, 0, 7, 7, 7], 1084 [0, 0, 0, 0, 7, 7]]); 1085 1086cmp_ok($x -> is_empty(), '==', 0, '$x -> is_empty()'); 1087cmp_ok($x -> is_scalar(), '==', 0, '$x -> is_scalar()'); 1088cmp_ok($x -> is_vector(), '==', 0, '$x -> is_vector()'); 1089cmp_ok($x -> is_row(), '==', 0, '$x -> is_row()'); 1090cmp_ok($x -> is_col(), '==', 0, '$x -> is_col()'); 1091cmp_ok($x -> is_square(), '==', 1, '$x -> is_square()'); 1092cmp_ok($x -> is_symmetric(), '==', 1, '$x -> is_symmetric()'); 1093cmp_ok($x -> is_antisymmetric(), '==', 0, '$x -> is_antisymmetric()'); 1094cmp_ok($x -> is_persymmetric(), '==', 1, '$x -> is_persymmetric()'); 1095cmp_ok($x -> is_hankel(), '==', 1, '$x -> is_hankel()'); 1096cmp_ok($x -> is_zero(), '==', 0, '$x -> is_zero()'); 1097cmp_ok($x -> is_one(), '==', 0, '$x -> is_one()'); 1098cmp_ok($x -> is_constant(), '==', 0, '$x -> is_constant()'); 1099cmp_ok($x -> is_identity(), '==', 0, '$x -> is_identity()'); 1100cmp_ok($x -> is_exchg(), '==', 0, '$x -> is_exchg()'); 1101cmp_ok($x -> is_bool(), '==', 0, '$x -> is_bool()'); 1102cmp_ok($x -> is_perm(), '==', 0, '$x -> is_perm()'); 1103cmp_ok($x -> is_int(), '==', 1, '$x -> is_int()'); 1104cmp_ok($x -> is_diag(), '==', 0, '$x -> is_diag()'); 1105cmp_ok($x -> is_adiag(), '==', 0, '$x -> is_adiag()'); 1106cmp_ok($x -> is_tridiag(), '==', 1, '$x -> is_tridiag()'); 1107cmp_ok($x -> is_atridiag(), '==', 0, '$x -> is_atridiag()'); 1108cmp_ok($x -> is_pentadiag(), '==', 1, '$x -> is_pentadiag()'); 1109cmp_ok($x -> is_apentadiag(), '==', 0, '$x -> is_apentadiag()'); 1110cmp_ok($x -> is_heptadiag(), '==', 1, '$x -> is_heptadiag()'); 1111cmp_ok($x -> is_aheptadiag(), '==', 0, '$x -> is_aheptadiag()'); 1112cmp_ok($x -> is_band(0), '==', 0, '$x -> is_band(0)'); 1113cmp_ok($x -> is_aband(0), '==', 0, '$x -> is_aband(0)'); 1114cmp_ok($x -> is_band(1), '==', 1, '$x -> is_band(1)'); 1115cmp_ok($x -> is_aband(1), '==', 0, '$x -> is_aband(1)'); 1116cmp_ok($x -> is_band(2), '==', 1, '$x -> is_band(2)'); 1117cmp_ok($x -> is_aband(2), '==', 0, '$x -> is_aband(2)'); 1118cmp_ok($x -> is_band(3), '==', 1, '$x -> is_band(3)'); 1119cmp_ok($x -> is_aband(3), '==', 0, '$x -> is_aband(3)'); 1120cmp_ok($x -> is_band(4), '==', 1, '$x -> is_band(4)'); 1121cmp_ok($x -> is_aband(4), '==', 0, '$x -> is_aband(4)'); 1122cmp_ok($x -> is_triu(), '==', 0, '$x -> is_triu()'); 1123cmp_ok($x -> is_striu(), '==', 0, '$x -> is_striu()'); 1124cmp_ok($x -> is_tril(), '==', 0, '$x -> is_tril()'); 1125cmp_ok($x -> is_stril(), '==', 0, '$x -> is_stril()'); 1126cmp_ok($x -> is_atriu(), '==', 0, '$x -> is_atriu()'); 1127cmp_ok($x -> is_satriu(), '==', 0, '$x -> is_satriu()'); 1128cmp_ok($x -> is_atril(), '==', 0, '$x -> is_atril()'); 1129cmp_ok($x -> is_satril(), '==', 0, '$x -> is_satril()'); 1130 1131# anti-tridiagonal 1132 1133note(<<'EOF'); 1134$x = Math::Matrix -> new([[0, 0, 0, 0, 7, 7], 1135 [0, 0, 0, 7, 7, 7], 1136 [0, 0, 7, 7, 7, 0], 1137 [0, 7, 7, 7, 0, 0], 1138 [7, 7, 7, 0, 0, 0], 1139 [7, 7, 0, 0, 0, 0]]); 1140EOF 1141 1142$x = Math::Matrix -> new([[0, 0, 0, 0, 7, 7], 1143 [0, 0, 0, 7, 7, 7], 1144 [0, 0, 7, 7, 7, 0], 1145 [0, 7, 7, 7, 0, 0], 1146 [7, 7, 7, 0, 0, 0], 1147 [7, 7, 0, 0, 0, 0]]); 1148 1149cmp_ok($x -> is_empty(), '==', 0, '$x -> is_empty()'); 1150cmp_ok($x -> is_scalar(), '==', 0, '$x -> is_scalar()'); 1151cmp_ok($x -> is_vector(), '==', 0, '$x -> is_vector()'); 1152cmp_ok($x -> is_row(), '==', 0, '$x -> is_row()'); 1153cmp_ok($x -> is_col(), '==', 0, '$x -> is_col()'); 1154cmp_ok($x -> is_square(), '==', 1, '$x -> is_square()'); 1155cmp_ok($x -> is_symmetric(), '==', 1, '$x -> is_symmetric()'); 1156cmp_ok($x -> is_antisymmetric(), '==', 0, '$x -> is_antisymmetric()'); 1157cmp_ok($x -> is_persymmetric(), '==', 1, '$x -> is_persymmetric()'); 1158cmp_ok($x -> is_hankel(), '==', 0, '$x -> is_hankel()'); 1159cmp_ok($x -> is_zero(), '==', 0, '$x -> is_zero()'); 1160cmp_ok($x -> is_one(), '==', 0, '$x -> is_one()'); 1161cmp_ok($x -> is_constant(), '==', 0, '$x -> is_constant()'); 1162cmp_ok($x -> is_identity(), '==', 0, '$x -> is_identity()'); 1163cmp_ok($x -> is_exchg(), '==', 0, '$x -> is_exchg()'); 1164cmp_ok($x -> is_bool(), '==', 0, '$x -> is_bool()'); 1165cmp_ok($x -> is_perm(), '==', 0, '$x -> is_perm()'); 1166cmp_ok($x -> is_int(), '==', 1, '$x -> is_int()'); 1167cmp_ok($x -> is_diag(), '==', 0, '$x -> is_diag()'); 1168cmp_ok($x -> is_adiag(), '==', 0, '$x -> is_adiag()'); 1169cmp_ok($x -> is_tridiag(), '==', 0, '$x -> is_tridiag()'); 1170cmp_ok($x -> is_atridiag(), '==', 1, '$x -> is_atridiag()'); 1171cmp_ok($x -> is_pentadiag(), '==', 0, '$x -> is_pentadiag()'); 1172cmp_ok($x -> is_apentadiag(), '==', 1, '$x -> is_apentadiag()'); 1173cmp_ok($x -> is_heptadiag(), '==', 0, '$x -> is_heptadiag()'); 1174cmp_ok($x -> is_aheptadiag(), '==', 1, '$x -> is_aheptadiag()'); 1175cmp_ok($x -> is_band(0), '==', 0, '$x -> is_band(0)'); 1176cmp_ok($x -> is_aband(0), '==', 0, '$x -> is_aband(0)'); 1177cmp_ok($x -> is_band(1), '==', 0, '$x -> is_band(1)'); 1178cmp_ok($x -> is_aband(1), '==', 1, '$x -> is_aband(1)'); 1179cmp_ok($x -> is_band(2), '==', 0, '$x -> is_band(2)'); 1180cmp_ok($x -> is_aband(2), '==', 1, '$x -> is_aband(2)'); 1181cmp_ok($x -> is_band(3), '==', 0, '$x -> is_band(3)'); 1182cmp_ok($x -> is_aband(3), '==', 1, '$x -> is_aband(3)'); 1183cmp_ok($x -> is_band(4), '==', 0, '$x -> is_band(4)'); 1184cmp_ok($x -> is_aband(4), '==', 1, '$x -> is_aband(4)'); 1185cmp_ok($x -> is_triu(), '==', 0, '$x -> is_triu()'); 1186cmp_ok($x -> is_striu(), '==', 0, '$x -> is_striu()'); 1187cmp_ok($x -> is_tril(), '==', 0, '$x -> is_tril()'); 1188cmp_ok($x -> is_stril(), '==', 0, '$x -> is_stril()'); 1189cmp_ok($x -> is_atriu(), '==', 0, '$x -> is_atriu()'); 1190cmp_ok($x -> is_satriu(), '==', 0, '$x -> is_satriu()'); 1191cmp_ok($x -> is_atril(), '==', 0, '$x -> is_atril()'); 1192cmp_ok($x -> is_satril(), '==', 0, '$x -> is_satril()'); 1193 1194# pentadiagonal 1195 1196note(<<'EOF'); 1197$x = Math::Matrix -> new([[7, 7, 7, 0, 0, 0], 1198 [7, 7, 7, 7, 0, 0], 1199 [7, 7, 7, 7, 7, 0], 1200 [0, 7, 7, 7, 7, 7], 1201 [0, 0, 7, 7, 7, 7], 1202 [0, 0, 0, 7, 7, 7]]); 1203EOF 1204 1205$x = Math::Matrix -> new([[7, 7, 7, 0, 0, 0], 1206 [7, 7, 7, 7, 0, 0], 1207 [7, 7, 7, 7, 7, 0], 1208 [0, 7, 7, 7, 7, 7], 1209 [0, 0, 7, 7, 7, 7], 1210 [0, 0, 0, 7, 7, 7]]); 1211 1212cmp_ok($x -> is_empty(), '==', 0, '$x -> is_empty()'); 1213cmp_ok($x -> is_scalar(), '==', 0, '$x -> is_scalar()'); 1214cmp_ok($x -> is_vector(), '==', 0, '$x -> is_vector()'); 1215cmp_ok($x -> is_row(), '==', 0, '$x -> is_row()'); 1216cmp_ok($x -> is_col(), '==', 0, '$x -> is_col()'); 1217cmp_ok($x -> is_square(), '==', 1, '$x -> is_square()'); 1218cmp_ok($x -> is_symmetric(), '==', 1, '$x -> is_symmetric()'); 1219cmp_ok($x -> is_antisymmetric(), '==', 0, '$x -> is_antisymmetric()'); 1220cmp_ok($x -> is_persymmetric(), '==', 1, '$x -> is_persymmetric()'); 1221cmp_ok($x -> is_hankel(), '==', 1, '$x -> is_hankel()'); 1222cmp_ok($x -> is_zero(), '==', 0, '$x -> is_zero()'); 1223cmp_ok($x -> is_one(), '==', 0, '$x -> is_one()'); 1224cmp_ok($x -> is_constant(), '==', 0, '$x -> is_constant()'); 1225cmp_ok($x -> is_identity(), '==', 0, '$x -> is_identity()'); 1226cmp_ok($x -> is_exchg(), '==', 0, '$x -> is_exchg()'); 1227cmp_ok($x -> is_bool(), '==', 0, '$x -> is_bool()'); 1228cmp_ok($x -> is_perm(), '==', 0, '$x -> is_perm()'); 1229cmp_ok($x -> is_int(), '==', 1, '$x -> is_int()'); 1230cmp_ok($x -> is_diag(), '==', 0, '$x -> is_diag()'); 1231cmp_ok($x -> is_adiag(), '==', 0, '$x -> is_adiag()'); 1232cmp_ok($x -> is_tridiag(), '==', 0, '$x -> is_tridiag()'); 1233cmp_ok($x -> is_atridiag(), '==', 0, '$x -> is_atridiag()'); 1234cmp_ok($x -> is_pentadiag(), '==', 1, '$x -> is_pentadiag()'); 1235cmp_ok($x -> is_apentadiag(), '==', 0, '$x -> is_apentadiag()'); 1236cmp_ok($x -> is_heptadiag(), '==', 1, '$x -> is_heptadiag()'); 1237cmp_ok($x -> is_aheptadiag(), '==', 0, '$x -> is_aheptadiag()'); 1238cmp_ok($x -> is_band(0), '==', 0, '$x -> is_band(0)'); 1239cmp_ok($x -> is_aband(0), '==', 0, '$x -> is_aband(0)'); 1240cmp_ok($x -> is_band(1), '==', 0, '$x -> is_band(1)'); 1241cmp_ok($x -> is_aband(1), '==', 0, '$x -> is_aband(1)'); 1242cmp_ok($x -> is_band(2), '==', 1, '$x -> is_band(2)'); 1243cmp_ok($x -> is_aband(2), '==', 0, '$x -> is_aband(2)'); 1244cmp_ok($x -> is_band(3), '==', 1, '$x -> is_band(3)'); 1245cmp_ok($x -> is_aband(3), '==', 0, '$x -> is_aband(3)'); 1246cmp_ok($x -> is_band(4), '==', 1, '$x -> is_band(4)'); 1247cmp_ok($x -> is_aband(4), '==', 0, '$x -> is_aband(4)'); 1248cmp_ok($x -> is_triu(), '==', 0, '$x -> is_triu()'); 1249cmp_ok($x -> is_striu(), '==', 0, '$x -> is_striu()'); 1250cmp_ok($x -> is_tril(), '==', 0, '$x -> is_tril()'); 1251cmp_ok($x -> is_stril(), '==', 0, '$x -> is_stril()'); 1252cmp_ok($x -> is_atriu(), '==', 0, '$x -> is_atriu()'); 1253cmp_ok($x -> is_satriu(), '==', 0, '$x -> is_satriu()'); 1254cmp_ok($x -> is_atril(), '==', 0, '$x -> is_atril()'); 1255cmp_ok($x -> is_satril(), '==', 0, '$x -> is_satril()'); 1256 1257# anti-pentadiagonal 1258 1259note(<<'EOF'); 1260$x = Math::Matrix -> new([[0, 0, 0, 7, 7, 7], 1261 [0, 0, 7, 7, 7, 7], 1262 [0, 7, 7, 7, 7, 7], 1263 [7, 7, 7, 7, 7, 0], 1264 [7, 7, 7, 7, 0, 0], 1265 [7, 7, 7, 0, 0, 0]]); 1266EOF 1267 1268$x = Math::Matrix -> new([[0, 0, 0, 7, 7, 7], 1269 [0, 0, 7, 7, 7, 7], 1270 [0, 7, 7, 7, 7, 7], 1271 [7, 7, 7, 7, 7, 0], 1272 [7, 7, 7, 7, 0, 0], 1273 [7, 7, 7, 0, 0, 0]]); 1274 1275cmp_ok($x -> is_empty(), '==', 0, '$x -> is_empty()'); 1276cmp_ok($x -> is_scalar(), '==', 0, '$x -> is_scalar()'); 1277cmp_ok($x -> is_vector(), '==', 0, '$x -> is_vector()'); 1278cmp_ok($x -> is_row(), '==', 0, '$x -> is_row()'); 1279cmp_ok($x -> is_col(), '==', 0, '$x -> is_col()'); 1280cmp_ok($x -> is_square(), '==', 1, '$x -> is_square()'); 1281cmp_ok($x -> is_symmetric(), '==', 1, '$x -> is_symmetric()'); 1282cmp_ok($x -> is_antisymmetric(), '==', 0, '$x -> is_antisymmetric()'); 1283cmp_ok($x -> is_persymmetric(), '==', 1, '$x -> is_persymmetric()'); 1284cmp_ok($x -> is_hankel(), '==', 0, '$x -> is_hankel()'); 1285cmp_ok($x -> is_zero(), '==', 0, '$x -> is_zero()'); 1286cmp_ok($x -> is_one(), '==', 0, '$x -> is_one()'); 1287cmp_ok($x -> is_constant(), '==', 0, '$x -> is_constant()'); 1288cmp_ok($x -> is_identity(), '==', 0, '$x -> is_identity()'); 1289cmp_ok($x -> is_exchg(), '==', 0, '$x -> is_exchg()'); 1290cmp_ok($x -> is_bool(), '==', 0, '$x -> is_bool()'); 1291cmp_ok($x -> is_perm(), '==', 0, '$x -> is_perm()'); 1292cmp_ok($x -> is_int(), '==', 1, '$x -> is_int()'); 1293cmp_ok($x -> is_diag(), '==', 0, '$x -> is_diag()'); 1294cmp_ok($x -> is_adiag(), '==', 0, '$x -> is_adiag()'); 1295cmp_ok($x -> is_tridiag(), '==', 0, '$x -> is_tridiag()'); 1296cmp_ok($x -> is_atridiag(), '==', 0, '$x -> is_atridiag()'); 1297cmp_ok($x -> is_pentadiag(), '==', 0, '$x -> is_pentadiag()'); 1298cmp_ok($x -> is_apentadiag(), '==', 1, '$x -> is_apentadiag()'); 1299cmp_ok($x -> is_heptadiag(), '==', 0, '$x -> is_heptadiag()'); 1300cmp_ok($x -> is_aheptadiag(), '==', 1, '$x -> is_aheptadiag()'); 1301cmp_ok($x -> is_band(0), '==', 0, '$x -> is_band(0)'); 1302cmp_ok($x -> is_aband(0), '==', 0, '$x -> is_aband(0)'); 1303cmp_ok($x -> is_band(1), '==', 0, '$x -> is_band(1)'); 1304cmp_ok($x -> is_aband(1), '==', 0, '$x -> is_aband(1)'); 1305cmp_ok($x -> is_band(2), '==', 0, '$x -> is_band(2)'); 1306cmp_ok($x -> is_aband(2), '==', 1, '$x -> is_aband(2)'); 1307cmp_ok($x -> is_band(3), '==', 0, '$x -> is_band(3)'); 1308cmp_ok($x -> is_aband(3), '==', 1, '$x -> is_aband(3)'); 1309cmp_ok($x -> is_band(4), '==', 0, '$x -> is_band(4)'); 1310cmp_ok($x -> is_aband(4), '==', 1, '$x -> is_aband(4)'); 1311cmp_ok($x -> is_triu(), '==', 0, '$x -> is_triu()'); 1312cmp_ok($x -> is_striu(), '==', 0, '$x -> is_striu()'); 1313cmp_ok($x -> is_tril(), '==', 0, '$x -> is_tril()'); 1314cmp_ok($x -> is_stril(), '==', 0, '$x -> is_stril()'); 1315cmp_ok($x -> is_atriu(), '==', 0, '$x -> is_atriu()'); 1316cmp_ok($x -> is_satriu(), '==', 0, '$x -> is_satriu()'); 1317cmp_ok($x -> is_atril(), '==', 0, '$x -> is_atril()'); 1318cmp_ok($x -> is_satril(), '==', 0, '$x -> is_satril()'); 1319 1320# heptadiagonal 1321 1322note(<<'EOF'); 1323$x = Math::Matrix -> new([[7, 7, 7, 7, 0, 0], 1324 [7, 7, 7, 7, 7, 0], 1325 [7, 7, 7, 7, 7, 7], 1326 [7, 7, 7, 7, 7, 7], 1327 [0, 7, 7, 7, 7, 7], 1328 [0, 0, 7, 7, 7, 7]]); 1329EOF 1330 1331$x = Math::Matrix -> new([[7, 7, 7, 7, 0, 0], 1332 [7, 7, 7, 7, 7, 0], 1333 [7, 7, 7, 7, 7, 7], 1334 [7, 7, 7, 7, 7, 7], 1335 [0, 7, 7, 7, 7, 7], 1336 [0, 0, 7, 7, 7, 7]]); 1337 1338cmp_ok($x -> is_empty(), '==', 0, '$x -> is_empty()'); 1339cmp_ok($x -> is_scalar(), '==', 0, '$x -> is_scalar()'); 1340cmp_ok($x -> is_vector(), '==', 0, '$x -> is_vector()'); 1341cmp_ok($x -> is_row(), '==', 0, '$x -> is_row()'); 1342cmp_ok($x -> is_col(), '==', 0, '$x -> is_col()'); 1343cmp_ok($x -> is_square(), '==', 1, '$x -> is_square()'); 1344cmp_ok($x -> is_symmetric(), '==', 1, '$x -> is_symmetric()'); 1345cmp_ok($x -> is_antisymmetric(), '==', 0, '$x -> is_antisymmetric()'); 1346cmp_ok($x -> is_persymmetric(), '==', 1, '$x -> is_persymmetric()'); 1347cmp_ok($x -> is_hankel(), '==', 1, '$x -> is_hankel()'); 1348cmp_ok($x -> is_zero(), '==', 0, '$x -> is_zero()'); 1349cmp_ok($x -> is_one(), '==', 0, '$x -> is_one()'); 1350cmp_ok($x -> is_constant(), '==', 0, '$x -> is_constant()'); 1351cmp_ok($x -> is_identity(), '==', 0, '$x -> is_identity()'); 1352cmp_ok($x -> is_exchg(), '==', 0, '$x -> is_exchg()'); 1353cmp_ok($x -> is_bool(), '==', 0, '$x -> is_bool()'); 1354cmp_ok($x -> is_perm(), '==', 0, '$x -> is_perm()'); 1355cmp_ok($x -> is_int(), '==', 1, '$x -> is_int()'); 1356cmp_ok($x -> is_diag(), '==', 0, '$x -> is_diag()'); 1357cmp_ok($x -> is_adiag(), '==', 0, '$x -> is_adiag()'); 1358cmp_ok($x -> is_tridiag(), '==', 0, '$x -> is_tridiag()'); 1359cmp_ok($x -> is_atridiag(), '==', 0, '$x -> is_atridiag()'); 1360cmp_ok($x -> is_pentadiag(), '==', 0, '$x -> is_pentadiag()'); 1361cmp_ok($x -> is_apentadiag(), '==', 0, '$x -> is_apentadiag()'); 1362cmp_ok($x -> is_heptadiag(), '==', 1, '$x -> is_heptadiag()'); 1363cmp_ok($x -> is_aheptadiag(), '==', 0, '$x -> is_aheptadiag()'); 1364cmp_ok($x -> is_band(0), '==', 0, '$x -> is_band(0)'); 1365cmp_ok($x -> is_aband(0), '==', 0, '$x -> is_aband(0)'); 1366cmp_ok($x -> is_band(1), '==', 0, '$x -> is_band(1)'); 1367cmp_ok($x -> is_aband(1), '==', 0, '$x -> is_aband(1)'); 1368cmp_ok($x -> is_band(2), '==', 0, '$x -> is_band(2)'); 1369cmp_ok($x -> is_aband(2), '==', 0, '$x -> is_aband(2)'); 1370cmp_ok($x -> is_band(3), '==', 1, '$x -> is_band(3)'); 1371cmp_ok($x -> is_aband(3), '==', 0, '$x -> is_aband(3)'); 1372cmp_ok($x -> is_band(4), '==', 1, '$x -> is_band(4)'); 1373cmp_ok($x -> is_aband(4), '==', 0, '$x -> is_aband(4)'); 1374cmp_ok($x -> is_triu(), '==', 0, '$x -> is_triu()'); 1375cmp_ok($x -> is_striu(), '==', 0, '$x -> is_striu()'); 1376cmp_ok($x -> is_tril(), '==', 0, '$x -> is_tril()'); 1377cmp_ok($x -> is_stril(), '==', 0, '$x -> is_stril()'); 1378cmp_ok($x -> is_atriu(), '==', 0, '$x -> is_atriu()'); 1379cmp_ok($x -> is_satriu(), '==', 0, '$x -> is_satriu()'); 1380cmp_ok($x -> is_atril(), '==', 0, '$x -> is_atril()'); 1381cmp_ok($x -> is_satril(), '==', 0, '$x -> is_satril()'); 1382 1383# anti-heptadiagonal 1384 1385note(<<'EOF'); 1386$x = Math::Matrix -> new([[0, 0, 7, 7, 7, 7], 1387 [0, 7, 7, 7, 7, 7], 1388 [7, 7, 7, 7, 7, 7], 1389 [7, 7, 7, 7, 7, 7], 1390 [7, 7, 7, 7, 7, 0], 1391 [7, 7, 7, 7, 0, 0]]); 1392EOF 1393 1394$x = Math::Matrix -> new([[0, 0, 7, 7, 7, 7], 1395 [0, 7, 7, 7, 7, 7], 1396 [7, 7, 7, 7, 7, 7], 1397 [7, 7, 7, 7, 7, 7], 1398 [7, 7, 7, 7, 7, 0], 1399 [7, 7, 7, 7, 0, 0]]); 1400 1401cmp_ok($x -> is_empty(), '==', 0, '$x -> is_empty()'); 1402cmp_ok($x -> is_scalar(), '==', 0, '$x -> is_scalar()'); 1403cmp_ok($x -> is_vector(), '==', 0, '$x -> is_vector()'); 1404cmp_ok($x -> is_row(), '==', 0, '$x -> is_row()'); 1405cmp_ok($x -> is_col(), '==', 0, '$x -> is_col()'); 1406cmp_ok($x -> is_square(), '==', 1, '$x -> is_square()'); 1407cmp_ok($x -> is_symmetric(), '==', 1, '$x -> is_symmetric()'); 1408cmp_ok($x -> is_antisymmetric(), '==', 0, '$x -> is_antisymmetric()'); 1409cmp_ok($x -> is_persymmetric(), '==', 1, '$x -> is_persymmetric()'); 1410cmp_ok($x -> is_hankel(), '==', 0, '$x -> is_hankel()'); 1411cmp_ok($x -> is_zero(), '==', 0, '$x -> is_zero()'); 1412cmp_ok($x -> is_one(), '==', 0, '$x -> is_one()'); 1413cmp_ok($x -> is_constant(), '==', 0, '$x -> is_constant()'); 1414cmp_ok($x -> is_identity(), '==', 0, '$x -> is_identity()'); 1415cmp_ok($x -> is_exchg(), '==', 0, '$x -> is_exchg()'); 1416cmp_ok($x -> is_bool(), '==', 0, '$x -> is_bool()'); 1417cmp_ok($x -> is_perm(), '==', 0, '$x -> is_perm()'); 1418cmp_ok($x -> is_int(), '==', 1, '$x -> is_int()'); 1419cmp_ok($x -> is_diag(), '==', 0, '$x -> is_diag()'); 1420cmp_ok($x -> is_adiag(), '==', 0, '$x -> is_adiag()'); 1421cmp_ok($x -> is_tridiag(), '==', 0, '$x -> is_tridiag()'); 1422cmp_ok($x -> is_atridiag(), '==', 0, '$x -> is_atridiag()'); 1423cmp_ok($x -> is_pentadiag(), '==', 0, '$x -> is_pentadiag()'); 1424cmp_ok($x -> is_apentadiag(), '==', 0, '$x -> is_apentadiag()'); 1425cmp_ok($x -> is_heptadiag(), '==', 0, '$x -> is_heptadiag()'); 1426cmp_ok($x -> is_aheptadiag(), '==', 1, '$x -> is_aheptadiag()'); 1427cmp_ok($x -> is_band(0), '==', 0, '$x -> is_band(0)'); 1428cmp_ok($x -> is_aband(0), '==', 0, '$x -> is_aband(0)'); 1429cmp_ok($x -> is_band(1), '==', 0, '$x -> is_band(1)'); 1430cmp_ok($x -> is_aband(1), '==', 0, '$x -> is_aband(1)'); 1431cmp_ok($x -> is_band(2), '==', 0, '$x -> is_band(2)'); 1432cmp_ok($x -> is_aband(2), '==', 0, '$x -> is_aband(2)'); 1433cmp_ok($x -> is_band(3), '==', 0, '$x -> is_band(3)'); 1434cmp_ok($x -> is_aband(3), '==', 1, '$x -> is_aband(3)'); 1435cmp_ok($x -> is_band(4), '==', 0, '$x -> is_band(4)'); 1436cmp_ok($x -> is_aband(4), '==', 1, '$x -> is_aband(4)'); 1437cmp_ok($x -> is_triu(), '==', 0, '$x -> is_triu()'); 1438cmp_ok($x -> is_striu(), '==', 0, '$x -> is_striu()'); 1439cmp_ok($x -> is_tril(), '==', 0, '$x -> is_tril()'); 1440cmp_ok($x -> is_stril(), '==', 0, '$x -> is_stril()'); 1441cmp_ok($x -> is_atriu(), '==', 0, '$x -> is_atriu()'); 1442cmp_ok($x -> is_satriu(), '==', 0, '$x -> is_satriu()'); 1443cmp_ok($x -> is_atril(), '==', 0, '$x -> is_atril()'); 1444cmp_ok($x -> is_satril(), '==', 0, '$x -> is_satril()'); 1445