gorgonia.org/tensor@v0.9.24/array_getset.go (about) 1 // Code generated by genlib2. DO NOT EDIT. 2 3 package tensor 4 5 import ( 6 "reflect" 7 "unsafe" 8 9 "github.com/pkg/errors" 10 "gorgonia.org/tensor/internal/storage" 11 ) 12 13 // Set sets the value of the underlying array at the index i. 14 func (a *array) Set(i int, x interface{}) { 15 switch a.t.Kind() { 16 case reflect.Bool: 17 xv := x.(bool) 18 a.SetB(i, xv) 19 case reflect.Int: 20 xv := x.(int) 21 a.SetI(i, xv) 22 case reflect.Int8: 23 xv := x.(int8) 24 a.SetI8(i, xv) 25 case reflect.Int16: 26 xv := x.(int16) 27 a.SetI16(i, xv) 28 case reflect.Int32: 29 xv := x.(int32) 30 a.SetI32(i, xv) 31 case reflect.Int64: 32 xv := x.(int64) 33 a.SetI64(i, xv) 34 case reflect.Uint: 35 xv := x.(uint) 36 a.SetU(i, xv) 37 case reflect.Uint8: 38 xv := x.(uint8) 39 a.SetU8(i, xv) 40 case reflect.Uint16: 41 xv := x.(uint16) 42 a.SetU16(i, xv) 43 case reflect.Uint32: 44 xv := x.(uint32) 45 a.SetU32(i, xv) 46 case reflect.Uint64: 47 xv := x.(uint64) 48 a.SetU64(i, xv) 49 case reflect.Uintptr: 50 xv := x.(uintptr) 51 a.SetUintptr(i, xv) 52 case reflect.Float32: 53 xv := x.(float32) 54 a.SetF32(i, xv) 55 case reflect.Float64: 56 xv := x.(float64) 57 a.SetF64(i, xv) 58 case reflect.Complex64: 59 xv := x.(complex64) 60 a.SetC64(i, xv) 61 case reflect.Complex128: 62 xv := x.(complex128) 63 a.SetC128(i, xv) 64 case reflect.String: 65 xv := x.(string) 66 a.SetStr(i, xv) 67 case reflect.UnsafePointer: 68 xv := x.(unsafe.Pointer) 69 a.SetUnsafePointer(i, xv) 70 default: 71 xv := reflect.ValueOf(x) 72 val := reflect.NewAt(a.t.Type, storage.ElementAt(i, unsafe.Pointer(&a.Header.Raw[0]), a.t.Size())) 73 val = reflect.Indirect(val) 74 val.Set(xv) 75 } 76 } 77 78 // Get returns the ith element of the underlying array of the *Dense tensor. 79 func (a *array) Get(i int) interface{} { 80 switch a.t.Kind() { 81 case reflect.Bool: 82 return a.GetB(i) 83 84 case reflect.Int: 85 return a.GetI(i) 86 87 case reflect.Int8: 88 return a.GetI8(i) 89 90 case reflect.Int16: 91 return a.GetI16(i) 92 93 case reflect.Int32: 94 return a.GetI32(i) 95 96 case reflect.Int64: 97 return a.GetI64(i) 98 99 case reflect.Uint: 100 return a.GetU(i) 101 102 case reflect.Uint8: 103 return a.GetU8(i) 104 105 case reflect.Uint16: 106 return a.GetU16(i) 107 108 case reflect.Uint32: 109 return a.GetU32(i) 110 111 case reflect.Uint64: 112 return a.GetU64(i) 113 114 case reflect.Uintptr: 115 return a.GetUintptr(i) 116 117 case reflect.Float32: 118 return a.GetF32(i) 119 120 case reflect.Float64: 121 return a.GetF64(i) 122 123 case reflect.Complex64: 124 return a.GetC64(i) 125 126 case reflect.Complex128: 127 return a.GetC128(i) 128 129 case reflect.String: 130 return a.GetStr(i) 131 132 case reflect.UnsafePointer: 133 return a.GetUnsafePointer(i) 134 135 default: 136 val := reflect.NewAt(a.t.Type, storage.ElementAt(i, unsafe.Pointer(&a.Header.Raw[0]), a.t.Size())) 137 val = reflect.Indirect(val) 138 return val.Interface() 139 } 140 } 141 142 // Memset sets all values in the array. 143 func (a *array) Memset(x interface{}) error { 144 switch a.t { 145 case Bool: 146 if xv, ok := x.(bool); ok { 147 data := a.Bools() 148 for i := range data { 149 data[i] = xv 150 } 151 return nil 152 } 153 154 case Int: 155 if xv, ok := x.(int); ok { 156 data := a.Ints() 157 for i := range data { 158 data[i] = xv 159 } 160 return nil 161 } 162 163 case Int8: 164 if xv, ok := x.(int8); ok { 165 data := a.Int8s() 166 for i := range data { 167 data[i] = xv 168 } 169 return nil 170 } 171 172 case Int16: 173 if xv, ok := x.(int16); ok { 174 data := a.Int16s() 175 for i := range data { 176 data[i] = xv 177 } 178 return nil 179 } 180 181 case Int32: 182 if xv, ok := x.(int32); ok { 183 data := a.Int32s() 184 for i := range data { 185 data[i] = xv 186 } 187 return nil 188 } 189 190 case Int64: 191 if xv, ok := x.(int64); ok { 192 data := a.Int64s() 193 for i := range data { 194 data[i] = xv 195 } 196 return nil 197 } 198 199 case Uint: 200 if xv, ok := x.(uint); ok { 201 data := a.Uints() 202 for i := range data { 203 data[i] = xv 204 } 205 return nil 206 } 207 208 case Uint8: 209 if xv, ok := x.(uint8); ok { 210 data := a.Uint8s() 211 for i := range data { 212 data[i] = xv 213 } 214 return nil 215 } 216 217 case Uint16: 218 if xv, ok := x.(uint16); ok { 219 data := a.Uint16s() 220 for i := range data { 221 data[i] = xv 222 } 223 return nil 224 } 225 226 case Uint32: 227 if xv, ok := x.(uint32); ok { 228 data := a.Uint32s() 229 for i := range data { 230 data[i] = xv 231 } 232 return nil 233 } 234 235 case Uint64: 236 if xv, ok := x.(uint64); ok { 237 data := a.Uint64s() 238 for i := range data { 239 data[i] = xv 240 } 241 return nil 242 } 243 244 case Uintptr: 245 if xv, ok := x.(uintptr); ok { 246 data := a.Uintptrs() 247 for i := range data { 248 data[i] = xv 249 } 250 return nil 251 } 252 253 case Float32: 254 if xv, ok := x.(float32); ok { 255 data := a.Float32s() 256 for i := range data { 257 data[i] = xv 258 } 259 return nil 260 } 261 262 case Float64: 263 if xv, ok := x.(float64); ok { 264 data := a.Float64s() 265 for i := range data { 266 data[i] = xv 267 } 268 return nil 269 } 270 271 case Complex64: 272 if xv, ok := x.(complex64); ok { 273 data := a.Complex64s() 274 for i := range data { 275 data[i] = xv 276 } 277 return nil 278 } 279 280 case Complex128: 281 if xv, ok := x.(complex128); ok { 282 data := a.Complex128s() 283 for i := range data { 284 data[i] = xv 285 } 286 return nil 287 } 288 289 case String: 290 if xv, ok := x.(string); ok { 291 data := a.Strings() 292 for i := range data { 293 data[i] = xv 294 } 295 return nil 296 } 297 298 case UnsafePointer: 299 if xv, ok := x.(unsafe.Pointer); ok { 300 data := a.UnsafePointers() 301 for i := range data { 302 data[i] = xv 303 } 304 return nil 305 } 306 307 } 308 309 xv := reflect.ValueOf(x) 310 l := a.Len() 311 for i := 0; i < l; i++ { 312 val := reflect.NewAt(a.t.Type, storage.ElementAt(i, unsafe.Pointer(&a.Header.Raw[0]), a.t.Size())) 313 val = reflect.Indirect(val) 314 val.Set(xv) 315 } 316 return nil 317 } 318 319 func (a *array) memsetIter(x interface{}, it Iterator) (err error) { 320 var i int 321 switch a.t { 322 case Bool: 323 xv, ok := x.(bool) 324 if !ok { 325 return errors.Errorf(dtypeMismatch, a.t, x) 326 } 327 data := a.Bools() 328 for i, err = it.Next(); err == nil; i, err = it.Next() { 329 data[i] = xv 330 } 331 err = handleNoOp(err) 332 case Int: 333 xv, ok := x.(int) 334 if !ok { 335 return errors.Errorf(dtypeMismatch, a.t, x) 336 } 337 data := a.Ints() 338 for i, err = it.Next(); err == nil; i, err = it.Next() { 339 data[i] = xv 340 } 341 err = handleNoOp(err) 342 case Int8: 343 xv, ok := x.(int8) 344 if !ok { 345 return errors.Errorf(dtypeMismatch, a.t, x) 346 } 347 data := a.Int8s() 348 for i, err = it.Next(); err == nil; i, err = it.Next() { 349 data[i] = xv 350 } 351 err = handleNoOp(err) 352 case Int16: 353 xv, ok := x.(int16) 354 if !ok { 355 return errors.Errorf(dtypeMismatch, a.t, x) 356 } 357 data := a.Int16s() 358 for i, err = it.Next(); err == nil; i, err = it.Next() { 359 data[i] = xv 360 } 361 err = handleNoOp(err) 362 case Int32: 363 xv, ok := x.(int32) 364 if !ok { 365 return errors.Errorf(dtypeMismatch, a.t, x) 366 } 367 data := a.Int32s() 368 for i, err = it.Next(); err == nil; i, err = it.Next() { 369 data[i] = xv 370 } 371 err = handleNoOp(err) 372 case Int64: 373 xv, ok := x.(int64) 374 if !ok { 375 return errors.Errorf(dtypeMismatch, a.t, x) 376 } 377 data := a.Int64s() 378 for i, err = it.Next(); err == nil; i, err = it.Next() { 379 data[i] = xv 380 } 381 err = handleNoOp(err) 382 case Uint: 383 xv, ok := x.(uint) 384 if !ok { 385 return errors.Errorf(dtypeMismatch, a.t, x) 386 } 387 data := a.Uints() 388 for i, err = it.Next(); err == nil; i, err = it.Next() { 389 data[i] = xv 390 } 391 err = handleNoOp(err) 392 case Uint8: 393 xv, ok := x.(uint8) 394 if !ok { 395 return errors.Errorf(dtypeMismatch, a.t, x) 396 } 397 data := a.Uint8s() 398 for i, err = it.Next(); err == nil; i, err = it.Next() { 399 data[i] = xv 400 } 401 err = handleNoOp(err) 402 case Uint16: 403 xv, ok := x.(uint16) 404 if !ok { 405 return errors.Errorf(dtypeMismatch, a.t, x) 406 } 407 data := a.Uint16s() 408 for i, err = it.Next(); err == nil; i, err = it.Next() { 409 data[i] = xv 410 } 411 err = handleNoOp(err) 412 case Uint32: 413 xv, ok := x.(uint32) 414 if !ok { 415 return errors.Errorf(dtypeMismatch, a.t, x) 416 } 417 data := a.Uint32s() 418 for i, err = it.Next(); err == nil; i, err = it.Next() { 419 data[i] = xv 420 } 421 err = handleNoOp(err) 422 case Uint64: 423 xv, ok := x.(uint64) 424 if !ok { 425 return errors.Errorf(dtypeMismatch, a.t, x) 426 } 427 data := a.Uint64s() 428 for i, err = it.Next(); err == nil; i, err = it.Next() { 429 data[i] = xv 430 } 431 err = handleNoOp(err) 432 case Uintptr: 433 xv, ok := x.(uintptr) 434 if !ok { 435 return errors.Errorf(dtypeMismatch, a.t, x) 436 } 437 data := a.Uintptrs() 438 for i, err = it.Next(); err == nil; i, err = it.Next() { 439 data[i] = xv 440 } 441 err = handleNoOp(err) 442 case Float32: 443 xv, ok := x.(float32) 444 if !ok { 445 return errors.Errorf(dtypeMismatch, a.t, x) 446 } 447 data := a.Float32s() 448 for i, err = it.Next(); err == nil; i, err = it.Next() { 449 data[i] = xv 450 } 451 err = handleNoOp(err) 452 case Float64: 453 xv, ok := x.(float64) 454 if !ok { 455 return errors.Errorf(dtypeMismatch, a.t, x) 456 } 457 data := a.Float64s() 458 for i, err = it.Next(); err == nil; i, err = it.Next() { 459 data[i] = xv 460 } 461 err = handleNoOp(err) 462 case Complex64: 463 xv, ok := x.(complex64) 464 if !ok { 465 return errors.Errorf(dtypeMismatch, a.t, x) 466 } 467 data := a.Complex64s() 468 for i, err = it.Next(); err == nil; i, err = it.Next() { 469 data[i] = xv 470 } 471 err = handleNoOp(err) 472 case Complex128: 473 xv, ok := x.(complex128) 474 if !ok { 475 return errors.Errorf(dtypeMismatch, a.t, x) 476 } 477 data := a.Complex128s() 478 for i, err = it.Next(); err == nil; i, err = it.Next() { 479 data[i] = xv 480 } 481 err = handleNoOp(err) 482 case String: 483 xv, ok := x.(string) 484 if !ok { 485 return errors.Errorf(dtypeMismatch, a.t, x) 486 } 487 data := a.Strings() 488 for i, err = it.Next(); err == nil; i, err = it.Next() { 489 data[i] = xv 490 } 491 err = handleNoOp(err) 492 case UnsafePointer: 493 xv, ok := x.(unsafe.Pointer) 494 if !ok { 495 return errors.Errorf(dtypeMismatch, a.t, x) 496 } 497 data := a.UnsafePointers() 498 for i, err = it.Next(); err == nil; i, err = it.Next() { 499 data[i] = xv 500 } 501 err = handleNoOp(err) 502 default: 503 xv := reflect.ValueOf(x) 504 for i, err = it.Next(); err == nil; i, err = it.Next() { 505 val := reflect.NewAt(a.t.Type, storage.ElementAt(i, unsafe.Pointer(&a.Header.Raw[0]), a.t.Size())) 506 val = reflect.Indirect(val) 507 val.Set(xv) 508 } 509 err = handleNoOp(err) 510 } 511 return 512 } 513 514 // Eq checks that any two arrays are equal 515 func (a array) Eq(other interface{}) bool { 516 if oa, ok := other.(*array); ok { 517 if oa.t != a.t { 518 return false 519 } 520 521 if oa.Len() != a.Len() { 522 return false 523 } 524 /* 525 if oa.C != a.C { 526 return false 527 } 528 */ 529 530 // same exact thing 531 if uintptr(unsafe.Pointer(&oa.Header.Raw[0])) == uintptr(unsafe.Pointer(&a.Header.Raw[0])) { 532 return true 533 } 534 535 switch a.t.Kind() { 536 case reflect.Bool: 537 for i, v := range a.Bools() { 538 if oa.GetB(i) != v { 539 return false 540 } 541 } 542 case reflect.Int: 543 for i, v := range a.Ints() { 544 if oa.GetI(i) != v { 545 return false 546 } 547 } 548 case reflect.Int8: 549 for i, v := range a.Int8s() { 550 if oa.GetI8(i) != v { 551 return false 552 } 553 } 554 case reflect.Int16: 555 for i, v := range a.Int16s() { 556 if oa.GetI16(i) != v { 557 return false 558 } 559 } 560 case reflect.Int32: 561 for i, v := range a.Int32s() { 562 if oa.GetI32(i) != v { 563 return false 564 } 565 } 566 case reflect.Int64: 567 for i, v := range a.Int64s() { 568 if oa.GetI64(i) != v { 569 return false 570 } 571 } 572 case reflect.Uint: 573 for i, v := range a.Uints() { 574 if oa.GetU(i) != v { 575 return false 576 } 577 } 578 case reflect.Uint8: 579 for i, v := range a.Uint8s() { 580 if oa.GetU8(i) != v { 581 return false 582 } 583 } 584 case reflect.Uint16: 585 for i, v := range a.Uint16s() { 586 if oa.GetU16(i) != v { 587 return false 588 } 589 } 590 case reflect.Uint32: 591 for i, v := range a.Uint32s() { 592 if oa.GetU32(i) != v { 593 return false 594 } 595 } 596 case reflect.Uint64: 597 for i, v := range a.Uint64s() { 598 if oa.GetU64(i) != v { 599 return false 600 } 601 } 602 case reflect.Uintptr: 603 for i, v := range a.Uintptrs() { 604 if oa.GetUintptr(i) != v { 605 return false 606 } 607 } 608 case reflect.Float32: 609 for i, v := range a.Float32s() { 610 if oa.GetF32(i) != v { 611 return false 612 } 613 } 614 case reflect.Float64: 615 for i, v := range a.Float64s() { 616 if oa.GetF64(i) != v { 617 return false 618 } 619 } 620 case reflect.Complex64: 621 for i, v := range a.Complex64s() { 622 if oa.GetC64(i) != v { 623 return false 624 } 625 } 626 case reflect.Complex128: 627 for i, v := range a.Complex128s() { 628 if oa.GetC128(i) != v { 629 return false 630 } 631 } 632 case reflect.String: 633 for i, v := range a.Strings() { 634 if oa.GetStr(i) != v { 635 return false 636 } 637 } 638 case reflect.UnsafePointer: 639 for i, v := range a.UnsafePointers() { 640 if oa.GetUnsafePointer(i) != v { 641 return false 642 } 643 } 644 default: 645 for i := 0; i < a.Len(); i++ { 646 if !reflect.DeepEqual(a.Get(i), oa.Get(i)) { 647 return false 648 } 649 } 650 } 651 return true 652 } 653 return false 654 } 655 656 func (a *array) zeroIter(it Iterator) (err error) { 657 var i int 658 switch a.t { 659 case Bool: 660 data := a.Bools() 661 for i, err = it.Next(); err == nil; i, err = it.Next() { 662 data[i] = false 663 } 664 err = handleNoOp(err) 665 case Int: 666 data := a.Ints() 667 for i, err = it.Next(); err == nil; i, err = it.Next() { 668 data[i] = 0 669 } 670 err = handleNoOp(err) 671 case Int8: 672 data := a.Int8s() 673 for i, err = it.Next(); err == nil; i, err = it.Next() { 674 data[i] = 0 675 } 676 err = handleNoOp(err) 677 case Int16: 678 data := a.Int16s() 679 for i, err = it.Next(); err == nil; i, err = it.Next() { 680 data[i] = 0 681 } 682 err = handleNoOp(err) 683 case Int32: 684 data := a.Int32s() 685 for i, err = it.Next(); err == nil; i, err = it.Next() { 686 data[i] = 0 687 } 688 err = handleNoOp(err) 689 case Int64: 690 data := a.Int64s() 691 for i, err = it.Next(); err == nil; i, err = it.Next() { 692 data[i] = 0 693 } 694 err = handleNoOp(err) 695 case Uint: 696 data := a.Uints() 697 for i, err = it.Next(); err == nil; i, err = it.Next() { 698 data[i] = 0 699 } 700 err = handleNoOp(err) 701 case Uint8: 702 data := a.Uint8s() 703 for i, err = it.Next(); err == nil; i, err = it.Next() { 704 data[i] = 0 705 } 706 err = handleNoOp(err) 707 case Uint16: 708 data := a.Uint16s() 709 for i, err = it.Next(); err == nil; i, err = it.Next() { 710 data[i] = 0 711 } 712 err = handleNoOp(err) 713 case Uint32: 714 data := a.Uint32s() 715 for i, err = it.Next(); err == nil; i, err = it.Next() { 716 data[i] = 0 717 } 718 err = handleNoOp(err) 719 case Uint64: 720 data := a.Uint64s() 721 for i, err = it.Next(); err == nil; i, err = it.Next() { 722 data[i] = 0 723 } 724 err = handleNoOp(err) 725 case Uintptr: 726 data := a.Uintptrs() 727 for i, err = it.Next(); err == nil; i, err = it.Next() { 728 data[i] = 0 729 } 730 err = handleNoOp(err) 731 case Float32: 732 data := a.Float32s() 733 for i, err = it.Next(); err == nil; i, err = it.Next() { 734 data[i] = 0 735 } 736 err = handleNoOp(err) 737 case Float64: 738 data := a.Float64s() 739 for i, err = it.Next(); err == nil; i, err = it.Next() { 740 data[i] = 0 741 } 742 err = handleNoOp(err) 743 case Complex64: 744 data := a.Complex64s() 745 for i, err = it.Next(); err == nil; i, err = it.Next() { 746 data[i] = 0 747 } 748 err = handleNoOp(err) 749 case Complex128: 750 data := a.Complex128s() 751 for i, err = it.Next(); err == nil; i, err = it.Next() { 752 data[i] = 0 753 } 754 err = handleNoOp(err) 755 case String: 756 data := a.Strings() 757 for i, err = it.Next(); err == nil; i, err = it.Next() { 758 data[i] = "" 759 } 760 err = handleNoOp(err) 761 case UnsafePointer: 762 data := a.UnsafePointers() 763 for i, err = it.Next(); err == nil; i, err = it.Next() { 764 data[i] = nil 765 } 766 err = handleNoOp(err) 767 default: 768 for i, err = it.Next(); err == nil; i, err = it.Next() { 769 val := reflect.NewAt(a.t.Type, storage.ElementAt(i, unsafe.Pointer(&a.Header.Raw[0]), a.t.Size())) 770 val = reflect.Indirect(val) 771 val.Set(reflect.Zero(a.t)) 772 } 773 err = handleNoOp(err) 774 } 775 return 776 }