gorgonia.org/tensor@v0.9.24/internal/execution/generic_arith_vv.go (about) 1 // Code generated by genlib2. DO NOT EDIT. 2 3 package execution 4 5 import ( 6 "math" 7 "math/cmplx" 8 9 "github.com/chewxy/math32" 10 "gorgonia.org/vecf32" 11 "gorgonia.org/vecf64" 12 ) 13 14 func VecAddI(a []int, b []int) { 15 a = a[:] 16 b = b[:len(a)] 17 for i := range a { 18 a[i] = a[i] + b[i] 19 } 20 } 21 22 func VecAddI8(a []int8, b []int8) { 23 a = a[:] 24 b = b[:len(a)] 25 for i := range a { 26 a[i] = a[i] + b[i] 27 } 28 } 29 30 func VecAddI16(a []int16, b []int16) { 31 a = a[:] 32 b = b[:len(a)] 33 for i := range a { 34 a[i] = a[i] + b[i] 35 } 36 } 37 38 func VecAddI32(a []int32, b []int32) { 39 a = a[:] 40 b = b[:len(a)] 41 for i := range a { 42 a[i] = a[i] + b[i] 43 } 44 } 45 46 func VecAddI64(a []int64, b []int64) { 47 a = a[:] 48 b = b[:len(a)] 49 for i := range a { 50 a[i] = a[i] + b[i] 51 } 52 } 53 54 func VecAddU(a []uint, b []uint) { 55 a = a[:] 56 b = b[:len(a)] 57 for i := range a { 58 a[i] = a[i] + b[i] 59 } 60 } 61 62 func VecAddU8(a []uint8, b []uint8) { 63 a = a[:] 64 b = b[:len(a)] 65 for i := range a { 66 a[i] = a[i] + b[i] 67 } 68 } 69 70 func VecAddU16(a []uint16, b []uint16) { 71 a = a[:] 72 b = b[:len(a)] 73 for i := range a { 74 a[i] = a[i] + b[i] 75 } 76 } 77 78 func VecAddU32(a []uint32, b []uint32) { 79 a = a[:] 80 b = b[:len(a)] 81 for i := range a { 82 a[i] = a[i] + b[i] 83 } 84 } 85 86 func VecAddU64(a []uint64, b []uint64) { 87 a = a[:] 88 b = b[:len(a)] 89 for i := range a { 90 a[i] = a[i] + b[i] 91 } 92 } 93 94 func VecAddF32(a []float32, b []float32) { vecf32.Add(a, b) } 95 func VecAddF64(a []float64, b []float64) { vecf64.Add(a, b) } 96 func VecAddC64(a []complex64, b []complex64) { 97 a = a[:] 98 b = b[:len(a)] 99 for i := range a { 100 a[i] = a[i] + b[i] 101 } 102 } 103 104 func VecAddC128(a []complex128, b []complex128) { 105 a = a[:] 106 b = b[:len(a)] 107 for i := range a { 108 a[i] = a[i] + b[i] 109 } 110 } 111 112 func VecAddStr(a []string, b []string) { 113 a = a[:] 114 b = b[:len(a)] 115 for i := range a { 116 a[i] = a[i] + b[i] 117 } 118 } 119 120 func VecSubI(a []int, b []int) { 121 a = a[:] 122 b = b[:len(a)] 123 for i := range a { 124 a[i] = a[i] - b[i] 125 } 126 } 127 128 func VecSubI8(a []int8, b []int8) { 129 a = a[:] 130 b = b[:len(a)] 131 for i := range a { 132 a[i] = a[i] - b[i] 133 } 134 } 135 136 func VecSubI16(a []int16, b []int16) { 137 a = a[:] 138 b = b[:len(a)] 139 for i := range a { 140 a[i] = a[i] - b[i] 141 } 142 } 143 144 func VecSubI32(a []int32, b []int32) { 145 a = a[:] 146 b = b[:len(a)] 147 for i := range a { 148 a[i] = a[i] - b[i] 149 } 150 } 151 152 func VecSubI64(a []int64, b []int64) { 153 a = a[:] 154 b = b[:len(a)] 155 for i := range a { 156 a[i] = a[i] - b[i] 157 } 158 } 159 160 func VecSubU(a []uint, b []uint) { 161 a = a[:] 162 b = b[:len(a)] 163 for i := range a { 164 a[i] = a[i] - b[i] 165 } 166 } 167 168 func VecSubU8(a []uint8, b []uint8) { 169 a = a[:] 170 b = b[:len(a)] 171 for i := range a { 172 a[i] = a[i] - b[i] 173 } 174 } 175 176 func VecSubU16(a []uint16, b []uint16) { 177 a = a[:] 178 b = b[:len(a)] 179 for i := range a { 180 a[i] = a[i] - b[i] 181 } 182 } 183 184 func VecSubU32(a []uint32, b []uint32) { 185 a = a[:] 186 b = b[:len(a)] 187 for i := range a { 188 a[i] = a[i] - b[i] 189 } 190 } 191 192 func VecSubU64(a []uint64, b []uint64) { 193 a = a[:] 194 b = b[:len(a)] 195 for i := range a { 196 a[i] = a[i] - b[i] 197 } 198 } 199 200 func VecSubF32(a []float32, b []float32) { vecf32.Sub(a, b) } 201 func VecSubF64(a []float64, b []float64) { vecf64.Sub(a, b) } 202 func VecSubC64(a []complex64, b []complex64) { 203 a = a[:] 204 b = b[:len(a)] 205 for i := range a { 206 a[i] = a[i] - b[i] 207 } 208 } 209 210 func VecSubC128(a []complex128, b []complex128) { 211 a = a[:] 212 b = b[:len(a)] 213 for i := range a { 214 a[i] = a[i] - b[i] 215 } 216 } 217 218 func VecMulI(a []int, b []int) { 219 a = a[:] 220 b = b[:len(a)] 221 for i := range a { 222 a[i] = a[i] * b[i] 223 } 224 } 225 226 func VecMulI8(a []int8, b []int8) { 227 a = a[:] 228 b = b[:len(a)] 229 for i := range a { 230 a[i] = a[i] * b[i] 231 } 232 } 233 234 func VecMulI16(a []int16, b []int16) { 235 a = a[:] 236 b = b[:len(a)] 237 for i := range a { 238 a[i] = a[i] * b[i] 239 } 240 } 241 242 func VecMulI32(a []int32, b []int32) { 243 a = a[:] 244 b = b[:len(a)] 245 for i := range a { 246 a[i] = a[i] * b[i] 247 } 248 } 249 250 func VecMulI64(a []int64, b []int64) { 251 a = a[:] 252 b = b[:len(a)] 253 for i := range a { 254 a[i] = a[i] * b[i] 255 } 256 } 257 258 func VecMulU(a []uint, b []uint) { 259 a = a[:] 260 b = b[:len(a)] 261 for i := range a { 262 a[i] = a[i] * b[i] 263 } 264 } 265 266 func VecMulU8(a []uint8, b []uint8) { 267 a = a[:] 268 b = b[:len(a)] 269 for i := range a { 270 a[i] = a[i] * b[i] 271 } 272 } 273 274 func VecMulU16(a []uint16, b []uint16) { 275 a = a[:] 276 b = b[:len(a)] 277 for i := range a { 278 a[i] = a[i] * b[i] 279 } 280 } 281 282 func VecMulU32(a []uint32, b []uint32) { 283 a = a[:] 284 b = b[:len(a)] 285 for i := range a { 286 a[i] = a[i] * b[i] 287 } 288 } 289 290 func VecMulU64(a []uint64, b []uint64) { 291 a = a[:] 292 b = b[:len(a)] 293 for i := range a { 294 a[i] = a[i] * b[i] 295 } 296 } 297 298 func VecMulF32(a []float32, b []float32) { vecf32.Mul(a, b) } 299 func VecMulF64(a []float64, b []float64) { vecf64.Mul(a, b) } 300 func VecMulC64(a []complex64, b []complex64) { 301 a = a[:] 302 b = b[:len(a)] 303 for i := range a { 304 a[i] = a[i] * b[i] 305 } 306 } 307 308 func VecMulC128(a []complex128, b []complex128) { 309 a = a[:] 310 b = b[:len(a)] 311 for i := range a { 312 a[i] = a[i] * b[i] 313 } 314 } 315 316 func VecDivI(a []int, b []int) (err error) { 317 a = a[:] 318 b = b[:len(a)] 319 var errs errorIndices 320 for i := range a { 321 if b[i] == 0 { 322 errs = append(errs, i) 323 a[i] = 0 324 continue 325 } 326 a[i] = a[i] / b[i] 327 } 328 if err != nil { 329 return 330 } 331 if len(errs) > 0 { 332 return errs 333 } 334 return nil 335 } 336 337 func VecDivI8(a []int8, b []int8) (err error) { 338 a = a[:] 339 b = b[:len(a)] 340 var errs errorIndices 341 for i := range a { 342 if b[i] == 0 { 343 errs = append(errs, i) 344 a[i] = 0 345 continue 346 } 347 a[i] = a[i] / b[i] 348 } 349 if err != nil { 350 return 351 } 352 if len(errs) > 0 { 353 return errs 354 } 355 return nil 356 } 357 358 func VecDivI16(a []int16, b []int16) (err error) { 359 a = a[:] 360 b = b[:len(a)] 361 var errs errorIndices 362 for i := range a { 363 if b[i] == 0 { 364 errs = append(errs, i) 365 a[i] = 0 366 continue 367 } 368 a[i] = a[i] / b[i] 369 } 370 if err != nil { 371 return 372 } 373 if len(errs) > 0 { 374 return errs 375 } 376 return nil 377 } 378 379 func VecDivI32(a []int32, b []int32) (err error) { 380 a = a[:] 381 b = b[:len(a)] 382 var errs errorIndices 383 for i := range a { 384 if b[i] == 0 { 385 errs = append(errs, i) 386 a[i] = 0 387 continue 388 } 389 a[i] = a[i] / b[i] 390 } 391 if err != nil { 392 return 393 } 394 if len(errs) > 0 { 395 return errs 396 } 397 return nil 398 } 399 400 func VecDivI64(a []int64, b []int64) (err error) { 401 a = a[:] 402 b = b[:len(a)] 403 var errs errorIndices 404 for i := range a { 405 if b[i] == 0 { 406 errs = append(errs, i) 407 a[i] = 0 408 continue 409 } 410 a[i] = a[i] / b[i] 411 } 412 if err != nil { 413 return 414 } 415 if len(errs) > 0 { 416 return errs 417 } 418 return nil 419 } 420 421 func VecDivU(a []uint, b []uint) (err error) { 422 a = a[:] 423 b = b[:len(a)] 424 var errs errorIndices 425 for i := range a { 426 if b[i] == 0 { 427 errs = append(errs, i) 428 a[i] = 0 429 continue 430 } 431 a[i] = a[i] / b[i] 432 } 433 if err != nil { 434 return 435 } 436 if len(errs) > 0 { 437 return errs 438 } 439 return nil 440 } 441 442 func VecDivU8(a []uint8, b []uint8) (err error) { 443 a = a[:] 444 b = b[:len(a)] 445 var errs errorIndices 446 for i := range a { 447 if b[i] == 0 { 448 errs = append(errs, i) 449 a[i] = 0 450 continue 451 } 452 a[i] = a[i] / b[i] 453 } 454 if err != nil { 455 return 456 } 457 if len(errs) > 0 { 458 return errs 459 } 460 return nil 461 } 462 463 func VecDivU16(a []uint16, b []uint16) (err error) { 464 a = a[:] 465 b = b[:len(a)] 466 var errs errorIndices 467 for i := range a { 468 if b[i] == 0 { 469 errs = append(errs, i) 470 a[i] = 0 471 continue 472 } 473 a[i] = a[i] / b[i] 474 } 475 if err != nil { 476 return 477 } 478 if len(errs) > 0 { 479 return errs 480 } 481 return nil 482 } 483 484 func VecDivU32(a []uint32, b []uint32) (err error) { 485 a = a[:] 486 b = b[:len(a)] 487 var errs errorIndices 488 for i := range a { 489 if b[i] == 0 { 490 errs = append(errs, i) 491 a[i] = 0 492 continue 493 } 494 a[i] = a[i] / b[i] 495 } 496 if err != nil { 497 return 498 } 499 if len(errs) > 0 { 500 return errs 501 } 502 return nil 503 } 504 505 func VecDivU64(a []uint64, b []uint64) (err error) { 506 a = a[:] 507 b = b[:len(a)] 508 var errs errorIndices 509 for i := range a { 510 if b[i] == 0 { 511 errs = append(errs, i) 512 a[i] = 0 513 continue 514 } 515 a[i] = a[i] / b[i] 516 } 517 if err != nil { 518 return 519 } 520 if len(errs) > 0 { 521 return errs 522 } 523 return nil 524 } 525 526 func VecDivF32(a []float32, b []float32) { vecf32.Div(a, b) } 527 func VecDivF64(a []float64, b []float64) { vecf64.Div(a, b) } 528 func VecDivC64(a []complex64, b []complex64) { 529 a = a[:] 530 b = b[:len(a)] 531 for i := range a { 532 a[i] = a[i] / b[i] 533 } 534 } 535 536 func VecDivC128(a []complex128, b []complex128) { 537 a = a[:] 538 b = b[:len(a)] 539 for i := range a { 540 a[i] = a[i] / b[i] 541 } 542 } 543 544 func VecPowF32(a []float32, b []float32) { vecf32.Pow(a, b) } 545 func VecPowF64(a []float64, b []float64) { vecf64.Pow(a, b) } 546 func VecPowC64(a []complex64, b []complex64) { 547 a = a[:] 548 b = b[:len(a)] 549 for i := range a { 550 a[i] = complex64(cmplx.Pow(complex128(a[i]), complex128(b[i]))) 551 } 552 } 553 554 func VecPowC128(a []complex128, b []complex128) { 555 a = a[:] 556 b = b[:len(a)] 557 for i := range a { 558 a[i] = cmplx.Pow(a[i], b[i]) 559 } 560 } 561 562 func VecModI(a []int, b []int) { 563 a = a[:] 564 b = b[:len(a)] 565 for i := range a { 566 a[i] = a[i] % b[i] 567 } 568 } 569 570 func VecModI8(a []int8, b []int8) { 571 a = a[:] 572 b = b[:len(a)] 573 for i := range a { 574 a[i] = a[i] % b[i] 575 } 576 } 577 578 func VecModI16(a []int16, b []int16) { 579 a = a[:] 580 b = b[:len(a)] 581 for i := range a { 582 a[i] = a[i] % b[i] 583 } 584 } 585 586 func VecModI32(a []int32, b []int32) { 587 a = a[:] 588 b = b[:len(a)] 589 for i := range a { 590 a[i] = a[i] % b[i] 591 } 592 } 593 594 func VecModI64(a []int64, b []int64) { 595 a = a[:] 596 b = b[:len(a)] 597 for i := range a { 598 a[i] = a[i] % b[i] 599 } 600 } 601 602 func VecModU(a []uint, b []uint) { 603 a = a[:] 604 b = b[:len(a)] 605 for i := range a { 606 a[i] = a[i] % b[i] 607 } 608 } 609 610 func VecModU8(a []uint8, b []uint8) { 611 a = a[:] 612 b = b[:len(a)] 613 for i := range a { 614 a[i] = a[i] % b[i] 615 } 616 } 617 618 func VecModU16(a []uint16, b []uint16) { 619 a = a[:] 620 b = b[:len(a)] 621 for i := range a { 622 a[i] = a[i] % b[i] 623 } 624 } 625 626 func VecModU32(a []uint32, b []uint32) { 627 a = a[:] 628 b = b[:len(a)] 629 for i := range a { 630 a[i] = a[i] % b[i] 631 } 632 } 633 634 func VecModU64(a []uint64, b []uint64) { 635 a = a[:] 636 b = b[:len(a)] 637 for i := range a { 638 a[i] = a[i] % b[i] 639 } 640 } 641 642 func VecModF32(a []float32, b []float32) { vecf32.Mod(a, b) } 643 func VecModF64(a []float64, b []float64) { vecf64.Mod(a, b) } 644 func AddIncrI(a []int, b []int, incr []int) { 645 a = a[:] 646 b = b[:len(a)] 647 incr = incr[:len(a)] 648 for i := range incr { 649 incr[i] += a[i] + b[i] 650 } 651 } 652 653 func AddIncrI8(a []int8, b []int8, incr []int8) { 654 a = a[:] 655 b = b[:len(a)] 656 incr = incr[:len(a)] 657 for i := range incr { 658 incr[i] += a[i] + b[i] 659 } 660 } 661 662 func AddIncrI16(a []int16, b []int16, incr []int16) { 663 a = a[:] 664 b = b[:len(a)] 665 incr = incr[:len(a)] 666 for i := range incr { 667 incr[i] += a[i] + b[i] 668 } 669 } 670 671 func AddIncrI32(a []int32, b []int32, incr []int32) { 672 a = a[:] 673 b = b[:len(a)] 674 incr = incr[:len(a)] 675 for i := range incr { 676 incr[i] += a[i] + b[i] 677 } 678 } 679 680 func AddIncrI64(a []int64, b []int64, incr []int64) { 681 a = a[:] 682 b = b[:len(a)] 683 incr = incr[:len(a)] 684 for i := range incr { 685 incr[i] += a[i] + b[i] 686 } 687 } 688 689 func AddIncrU(a []uint, b []uint, incr []uint) { 690 a = a[:] 691 b = b[:len(a)] 692 incr = incr[:len(a)] 693 for i := range incr { 694 incr[i] += a[i] + b[i] 695 } 696 } 697 698 func AddIncrU8(a []uint8, b []uint8, incr []uint8) { 699 a = a[:] 700 b = b[:len(a)] 701 incr = incr[:len(a)] 702 for i := range incr { 703 incr[i] += a[i] + b[i] 704 } 705 } 706 707 func AddIncrU16(a []uint16, b []uint16, incr []uint16) { 708 a = a[:] 709 b = b[:len(a)] 710 incr = incr[:len(a)] 711 for i := range incr { 712 incr[i] += a[i] + b[i] 713 } 714 } 715 716 func AddIncrU32(a []uint32, b []uint32, incr []uint32) { 717 a = a[:] 718 b = b[:len(a)] 719 incr = incr[:len(a)] 720 for i := range incr { 721 incr[i] += a[i] + b[i] 722 } 723 } 724 725 func AddIncrU64(a []uint64, b []uint64, incr []uint64) { 726 a = a[:] 727 b = b[:len(a)] 728 incr = incr[:len(a)] 729 for i := range incr { 730 incr[i] += a[i] + b[i] 731 } 732 } 733 734 func AddIncrF32(a []float32, b []float32, incr []float32) { vecf32.IncrAdd(a, b, incr) } 735 func AddIncrF64(a []float64, b []float64, incr []float64) { vecf64.IncrAdd(a, b, incr) } 736 func AddIncrC64(a []complex64, b []complex64, incr []complex64) { 737 a = a[:] 738 b = b[:len(a)] 739 incr = incr[:len(a)] 740 for i := range incr { 741 incr[i] += a[i] + b[i] 742 } 743 } 744 745 func AddIncrC128(a []complex128, b []complex128, incr []complex128) { 746 a = a[:] 747 b = b[:len(a)] 748 incr = incr[:len(a)] 749 for i := range incr { 750 incr[i] += a[i] + b[i] 751 } 752 } 753 754 func AddIncrStr(a []string, b []string, incr []string) { 755 a = a[:] 756 b = b[:len(a)] 757 incr = incr[:len(a)] 758 for i := range incr { 759 incr[i] += a[i] + b[i] 760 } 761 } 762 763 func SubIncrI(a []int, b []int, incr []int) { 764 a = a[:] 765 b = b[:len(a)] 766 incr = incr[:len(a)] 767 for i := range incr { 768 incr[i] += a[i] - b[i] 769 } 770 } 771 772 func SubIncrI8(a []int8, b []int8, incr []int8) { 773 a = a[:] 774 b = b[:len(a)] 775 incr = incr[:len(a)] 776 for i := range incr { 777 incr[i] += a[i] - b[i] 778 } 779 } 780 781 func SubIncrI16(a []int16, b []int16, incr []int16) { 782 a = a[:] 783 b = b[:len(a)] 784 incr = incr[:len(a)] 785 for i := range incr { 786 incr[i] += a[i] - b[i] 787 } 788 } 789 790 func SubIncrI32(a []int32, b []int32, incr []int32) { 791 a = a[:] 792 b = b[:len(a)] 793 incr = incr[:len(a)] 794 for i := range incr { 795 incr[i] += a[i] - b[i] 796 } 797 } 798 799 func SubIncrI64(a []int64, b []int64, incr []int64) { 800 a = a[:] 801 b = b[:len(a)] 802 incr = incr[:len(a)] 803 for i := range incr { 804 incr[i] += a[i] - b[i] 805 } 806 } 807 808 func SubIncrU(a []uint, b []uint, incr []uint) { 809 a = a[:] 810 b = b[:len(a)] 811 incr = incr[:len(a)] 812 for i := range incr { 813 incr[i] += a[i] - b[i] 814 } 815 } 816 817 func SubIncrU8(a []uint8, b []uint8, incr []uint8) { 818 a = a[:] 819 b = b[:len(a)] 820 incr = incr[:len(a)] 821 for i := range incr { 822 incr[i] += a[i] - b[i] 823 } 824 } 825 826 func SubIncrU16(a []uint16, b []uint16, incr []uint16) { 827 a = a[:] 828 b = b[:len(a)] 829 incr = incr[:len(a)] 830 for i := range incr { 831 incr[i] += a[i] - b[i] 832 } 833 } 834 835 func SubIncrU32(a []uint32, b []uint32, incr []uint32) { 836 a = a[:] 837 b = b[:len(a)] 838 incr = incr[:len(a)] 839 for i := range incr { 840 incr[i] += a[i] - b[i] 841 } 842 } 843 844 func SubIncrU64(a []uint64, b []uint64, incr []uint64) { 845 a = a[:] 846 b = b[:len(a)] 847 incr = incr[:len(a)] 848 for i := range incr { 849 incr[i] += a[i] - b[i] 850 } 851 } 852 853 func SubIncrF32(a []float32, b []float32, incr []float32) { vecf32.IncrSub(a, b, incr) } 854 func SubIncrF64(a []float64, b []float64, incr []float64) { vecf64.IncrSub(a, b, incr) } 855 func SubIncrC64(a []complex64, b []complex64, incr []complex64) { 856 a = a[:] 857 b = b[:len(a)] 858 incr = incr[:len(a)] 859 for i := range incr { 860 incr[i] += a[i] - b[i] 861 } 862 } 863 864 func SubIncrC128(a []complex128, b []complex128, incr []complex128) { 865 a = a[:] 866 b = b[:len(a)] 867 incr = incr[:len(a)] 868 for i := range incr { 869 incr[i] += a[i] - b[i] 870 } 871 } 872 873 func MulIncrI(a []int, b []int, incr []int) { 874 a = a[:] 875 b = b[:len(a)] 876 incr = incr[:len(a)] 877 for i := range incr { 878 incr[i] += a[i] * b[i] 879 } 880 } 881 882 func MulIncrI8(a []int8, b []int8, incr []int8) { 883 a = a[:] 884 b = b[:len(a)] 885 incr = incr[:len(a)] 886 for i := range incr { 887 incr[i] += a[i] * b[i] 888 } 889 } 890 891 func MulIncrI16(a []int16, b []int16, incr []int16) { 892 a = a[:] 893 b = b[:len(a)] 894 incr = incr[:len(a)] 895 for i := range incr { 896 incr[i] += a[i] * b[i] 897 } 898 } 899 900 func MulIncrI32(a []int32, b []int32, incr []int32) { 901 a = a[:] 902 b = b[:len(a)] 903 incr = incr[:len(a)] 904 for i := range incr { 905 incr[i] += a[i] * b[i] 906 } 907 } 908 909 func MulIncrI64(a []int64, b []int64, incr []int64) { 910 a = a[:] 911 b = b[:len(a)] 912 incr = incr[:len(a)] 913 for i := range incr { 914 incr[i] += a[i] * b[i] 915 } 916 } 917 918 func MulIncrU(a []uint, b []uint, incr []uint) { 919 a = a[:] 920 b = b[:len(a)] 921 incr = incr[:len(a)] 922 for i := range incr { 923 incr[i] += a[i] * b[i] 924 } 925 } 926 927 func MulIncrU8(a []uint8, b []uint8, incr []uint8) { 928 a = a[:] 929 b = b[:len(a)] 930 incr = incr[:len(a)] 931 for i := range incr { 932 incr[i] += a[i] * b[i] 933 } 934 } 935 936 func MulIncrU16(a []uint16, b []uint16, incr []uint16) { 937 a = a[:] 938 b = b[:len(a)] 939 incr = incr[:len(a)] 940 for i := range incr { 941 incr[i] += a[i] * b[i] 942 } 943 } 944 945 func MulIncrU32(a []uint32, b []uint32, incr []uint32) { 946 a = a[:] 947 b = b[:len(a)] 948 incr = incr[:len(a)] 949 for i := range incr { 950 incr[i] += a[i] * b[i] 951 } 952 } 953 954 func MulIncrU64(a []uint64, b []uint64, incr []uint64) { 955 a = a[:] 956 b = b[:len(a)] 957 incr = incr[:len(a)] 958 for i := range incr { 959 incr[i] += a[i] * b[i] 960 } 961 } 962 963 func MulIncrF32(a []float32, b []float32, incr []float32) { vecf32.IncrMul(a, b, incr) } 964 func MulIncrF64(a []float64, b []float64, incr []float64) { vecf64.IncrMul(a, b, incr) } 965 func MulIncrC64(a []complex64, b []complex64, incr []complex64) { 966 a = a[:] 967 b = b[:len(a)] 968 incr = incr[:len(a)] 969 for i := range incr { 970 incr[i] += a[i] * b[i] 971 } 972 } 973 974 func MulIncrC128(a []complex128, b []complex128, incr []complex128) { 975 a = a[:] 976 b = b[:len(a)] 977 incr = incr[:len(a)] 978 for i := range incr { 979 incr[i] += a[i] * b[i] 980 } 981 } 982 983 func DivIncrI(a []int, b []int, incr []int) (err error) { 984 a = a[:] 985 b = b[:len(a)] 986 incr = incr[:len(a)] 987 var errs errorIndices 988 for i := range incr { 989 if b[i] == 0 { 990 errs = append(errs, i) 991 incr[i] = 0 992 continue 993 } 994 incr[i] += a[i] / b[i] 995 } 996 if err != nil { 997 return 998 } 999 if len(errs) > 0 { 1000 return errs 1001 } 1002 return nil 1003 } 1004 1005 func DivIncrI8(a []int8, b []int8, incr []int8) (err error) { 1006 a = a[:] 1007 b = b[:len(a)] 1008 incr = incr[:len(a)] 1009 var errs errorIndices 1010 for i := range incr { 1011 if b[i] == 0 { 1012 errs = append(errs, i) 1013 incr[i] = 0 1014 continue 1015 } 1016 incr[i] += a[i] / b[i] 1017 } 1018 if err != nil { 1019 return 1020 } 1021 if len(errs) > 0 { 1022 return errs 1023 } 1024 return nil 1025 } 1026 1027 func DivIncrI16(a []int16, b []int16, incr []int16) (err error) { 1028 a = a[:] 1029 b = b[:len(a)] 1030 incr = incr[:len(a)] 1031 var errs errorIndices 1032 for i := range incr { 1033 if b[i] == 0 { 1034 errs = append(errs, i) 1035 incr[i] = 0 1036 continue 1037 } 1038 incr[i] += a[i] / b[i] 1039 } 1040 if err != nil { 1041 return 1042 } 1043 if len(errs) > 0 { 1044 return errs 1045 } 1046 return nil 1047 } 1048 1049 func DivIncrI32(a []int32, b []int32, incr []int32) (err error) { 1050 a = a[:] 1051 b = b[:len(a)] 1052 incr = incr[:len(a)] 1053 var errs errorIndices 1054 for i := range incr { 1055 if b[i] == 0 { 1056 errs = append(errs, i) 1057 incr[i] = 0 1058 continue 1059 } 1060 incr[i] += a[i] / b[i] 1061 } 1062 if err != nil { 1063 return 1064 } 1065 if len(errs) > 0 { 1066 return errs 1067 } 1068 return nil 1069 } 1070 1071 func DivIncrI64(a []int64, b []int64, incr []int64) (err error) { 1072 a = a[:] 1073 b = b[:len(a)] 1074 incr = incr[:len(a)] 1075 var errs errorIndices 1076 for i := range incr { 1077 if b[i] == 0 { 1078 errs = append(errs, i) 1079 incr[i] = 0 1080 continue 1081 } 1082 incr[i] += a[i] / b[i] 1083 } 1084 if err != nil { 1085 return 1086 } 1087 if len(errs) > 0 { 1088 return errs 1089 } 1090 return nil 1091 } 1092 1093 func DivIncrU(a []uint, b []uint, incr []uint) (err error) { 1094 a = a[:] 1095 b = b[:len(a)] 1096 incr = incr[:len(a)] 1097 var errs errorIndices 1098 for i := range incr { 1099 if b[i] == 0 { 1100 errs = append(errs, i) 1101 incr[i] = 0 1102 continue 1103 } 1104 incr[i] += a[i] / b[i] 1105 } 1106 if err != nil { 1107 return 1108 } 1109 if len(errs) > 0 { 1110 return errs 1111 } 1112 return nil 1113 } 1114 1115 func DivIncrU8(a []uint8, b []uint8, incr []uint8) (err error) { 1116 a = a[:] 1117 b = b[:len(a)] 1118 incr = incr[:len(a)] 1119 var errs errorIndices 1120 for i := range incr { 1121 if b[i] == 0 { 1122 errs = append(errs, i) 1123 incr[i] = 0 1124 continue 1125 } 1126 incr[i] += a[i] / b[i] 1127 } 1128 if err != nil { 1129 return 1130 } 1131 if len(errs) > 0 { 1132 return errs 1133 } 1134 return nil 1135 } 1136 1137 func DivIncrU16(a []uint16, b []uint16, incr []uint16) (err error) { 1138 a = a[:] 1139 b = b[:len(a)] 1140 incr = incr[:len(a)] 1141 var errs errorIndices 1142 for i := range incr { 1143 if b[i] == 0 { 1144 errs = append(errs, i) 1145 incr[i] = 0 1146 continue 1147 } 1148 incr[i] += a[i] / b[i] 1149 } 1150 if err != nil { 1151 return 1152 } 1153 if len(errs) > 0 { 1154 return errs 1155 } 1156 return nil 1157 } 1158 1159 func DivIncrU32(a []uint32, b []uint32, incr []uint32) (err error) { 1160 a = a[:] 1161 b = b[:len(a)] 1162 incr = incr[:len(a)] 1163 var errs errorIndices 1164 for i := range incr { 1165 if b[i] == 0 { 1166 errs = append(errs, i) 1167 incr[i] = 0 1168 continue 1169 } 1170 incr[i] += a[i] / b[i] 1171 } 1172 if err != nil { 1173 return 1174 } 1175 if len(errs) > 0 { 1176 return errs 1177 } 1178 return nil 1179 } 1180 1181 func DivIncrU64(a []uint64, b []uint64, incr []uint64) (err error) { 1182 a = a[:] 1183 b = b[:len(a)] 1184 incr = incr[:len(a)] 1185 var errs errorIndices 1186 for i := range incr { 1187 if b[i] == 0 { 1188 errs = append(errs, i) 1189 incr[i] = 0 1190 continue 1191 } 1192 incr[i] += a[i] / b[i] 1193 } 1194 if err != nil { 1195 return 1196 } 1197 if len(errs) > 0 { 1198 return errs 1199 } 1200 return nil 1201 } 1202 1203 func DivIncrF32(a []float32, b []float32, incr []float32) { vecf32.IncrDiv(a, b, incr) } 1204 func DivIncrF64(a []float64, b []float64, incr []float64) { vecf64.IncrDiv(a, b, incr) } 1205 func DivIncrC64(a []complex64, b []complex64, incr []complex64) { 1206 a = a[:] 1207 b = b[:len(a)] 1208 incr = incr[:len(a)] 1209 for i := range incr { 1210 incr[i] += a[i] / b[i] 1211 } 1212 } 1213 1214 func DivIncrC128(a []complex128, b []complex128, incr []complex128) { 1215 a = a[:] 1216 b = b[:len(a)] 1217 incr = incr[:len(a)] 1218 for i := range incr { 1219 incr[i] += a[i] / b[i] 1220 } 1221 } 1222 1223 func PowIncrF32(a []float32, b []float32, incr []float32) { vecf32.IncrPow(a, b, incr) } 1224 func PowIncrF64(a []float64, b []float64, incr []float64) { vecf64.IncrPow(a, b, incr) } 1225 func PowIncrC64(a []complex64, b []complex64, incr []complex64) { 1226 a = a[:] 1227 b = b[:len(a)] 1228 incr = incr[:len(a)] 1229 for i := range incr { 1230 incr[i] += complex64(cmplx.Pow(complex128(a[i]), complex128(b[i]))) 1231 } 1232 } 1233 1234 func PowIncrC128(a []complex128, b []complex128, incr []complex128) { 1235 a = a[:] 1236 b = b[:len(a)] 1237 incr = incr[:len(a)] 1238 for i := range incr { 1239 incr[i] += cmplx.Pow(a[i], b[i]) 1240 } 1241 } 1242 1243 func ModIncrI(a []int, b []int, incr []int) { 1244 a = a[:] 1245 b = b[:len(a)] 1246 incr = incr[:len(a)] 1247 for i := range incr { 1248 incr[i] += a[i] % b[i] 1249 } 1250 } 1251 1252 func ModIncrI8(a []int8, b []int8, incr []int8) { 1253 a = a[:] 1254 b = b[:len(a)] 1255 incr = incr[:len(a)] 1256 for i := range incr { 1257 incr[i] += a[i] % b[i] 1258 } 1259 } 1260 1261 func ModIncrI16(a []int16, b []int16, incr []int16) { 1262 a = a[:] 1263 b = b[:len(a)] 1264 incr = incr[:len(a)] 1265 for i := range incr { 1266 incr[i] += a[i] % b[i] 1267 } 1268 } 1269 1270 func ModIncrI32(a []int32, b []int32, incr []int32) { 1271 a = a[:] 1272 b = b[:len(a)] 1273 incr = incr[:len(a)] 1274 for i := range incr { 1275 incr[i] += a[i] % b[i] 1276 } 1277 } 1278 1279 func ModIncrI64(a []int64, b []int64, incr []int64) { 1280 a = a[:] 1281 b = b[:len(a)] 1282 incr = incr[:len(a)] 1283 for i := range incr { 1284 incr[i] += a[i] % b[i] 1285 } 1286 } 1287 1288 func ModIncrU(a []uint, b []uint, incr []uint) { 1289 a = a[:] 1290 b = b[:len(a)] 1291 incr = incr[:len(a)] 1292 for i := range incr { 1293 incr[i] += a[i] % b[i] 1294 } 1295 } 1296 1297 func ModIncrU8(a []uint8, b []uint8, incr []uint8) { 1298 a = a[:] 1299 b = b[:len(a)] 1300 incr = incr[:len(a)] 1301 for i := range incr { 1302 incr[i] += a[i] % b[i] 1303 } 1304 } 1305 1306 func ModIncrU16(a []uint16, b []uint16, incr []uint16) { 1307 a = a[:] 1308 b = b[:len(a)] 1309 incr = incr[:len(a)] 1310 for i := range incr { 1311 incr[i] += a[i] % b[i] 1312 } 1313 } 1314 1315 func ModIncrU32(a []uint32, b []uint32, incr []uint32) { 1316 a = a[:] 1317 b = b[:len(a)] 1318 incr = incr[:len(a)] 1319 for i := range incr { 1320 incr[i] += a[i] % b[i] 1321 } 1322 } 1323 1324 func ModIncrU64(a []uint64, b []uint64, incr []uint64) { 1325 a = a[:] 1326 b = b[:len(a)] 1327 incr = incr[:len(a)] 1328 for i := range incr { 1329 incr[i] += a[i] % b[i] 1330 } 1331 } 1332 1333 func ModIncrF32(a []float32, b []float32, incr []float32) { vecf32.IncrMod(a, b, incr) } 1334 func ModIncrF64(a []float64, b []float64, incr []float64) { vecf64.IncrMod(a, b, incr) } 1335 func AddIterI(a []int, b []int, ait Iterator, bit Iterator) (err error) { 1336 var i, j int 1337 var validi, validj bool 1338 for { 1339 if i, validi, err = ait.NextValidity(); err != nil { 1340 err = handleNoOp(err) 1341 break 1342 } 1343 if j, validj, err = bit.NextValidity(); err != nil { 1344 err = handleNoOp(err) 1345 break 1346 } 1347 if validi && validj { 1348 a[i] = a[i] + b[j] 1349 } 1350 } 1351 return 1352 } 1353 1354 func AddIterI8(a []int8, b []int8, ait Iterator, bit Iterator) (err error) { 1355 var i, j int 1356 var validi, validj bool 1357 for { 1358 if i, validi, err = ait.NextValidity(); err != nil { 1359 err = handleNoOp(err) 1360 break 1361 } 1362 if j, validj, err = bit.NextValidity(); err != nil { 1363 err = handleNoOp(err) 1364 break 1365 } 1366 if validi && validj { 1367 a[i] = a[i] + b[j] 1368 } 1369 } 1370 return 1371 } 1372 1373 func AddIterI16(a []int16, b []int16, ait Iterator, bit Iterator) (err error) { 1374 var i, j int 1375 var validi, validj bool 1376 for { 1377 if i, validi, err = ait.NextValidity(); err != nil { 1378 err = handleNoOp(err) 1379 break 1380 } 1381 if j, validj, err = bit.NextValidity(); err != nil { 1382 err = handleNoOp(err) 1383 break 1384 } 1385 if validi && validj { 1386 a[i] = a[i] + b[j] 1387 } 1388 } 1389 return 1390 } 1391 1392 func AddIterI32(a []int32, b []int32, ait Iterator, bit Iterator) (err error) { 1393 var i, j int 1394 var validi, validj bool 1395 for { 1396 if i, validi, err = ait.NextValidity(); err != nil { 1397 err = handleNoOp(err) 1398 break 1399 } 1400 if j, validj, err = bit.NextValidity(); err != nil { 1401 err = handleNoOp(err) 1402 break 1403 } 1404 if validi && validj { 1405 a[i] = a[i] + b[j] 1406 } 1407 } 1408 return 1409 } 1410 1411 func AddIterI64(a []int64, b []int64, ait Iterator, bit Iterator) (err error) { 1412 var i, j int 1413 var validi, validj bool 1414 for { 1415 if i, validi, err = ait.NextValidity(); err != nil { 1416 err = handleNoOp(err) 1417 break 1418 } 1419 if j, validj, err = bit.NextValidity(); err != nil { 1420 err = handleNoOp(err) 1421 break 1422 } 1423 if validi && validj { 1424 a[i] = a[i] + b[j] 1425 } 1426 } 1427 return 1428 } 1429 1430 func AddIterU(a []uint, b []uint, ait Iterator, bit Iterator) (err error) { 1431 var i, j int 1432 var validi, validj bool 1433 for { 1434 if i, validi, err = ait.NextValidity(); err != nil { 1435 err = handleNoOp(err) 1436 break 1437 } 1438 if j, validj, err = bit.NextValidity(); err != nil { 1439 err = handleNoOp(err) 1440 break 1441 } 1442 if validi && validj { 1443 a[i] = a[i] + b[j] 1444 } 1445 } 1446 return 1447 } 1448 1449 func AddIterU8(a []uint8, b []uint8, ait Iterator, bit Iterator) (err error) { 1450 var i, j int 1451 var validi, validj bool 1452 for { 1453 if i, validi, err = ait.NextValidity(); err != nil { 1454 err = handleNoOp(err) 1455 break 1456 } 1457 if j, validj, err = bit.NextValidity(); err != nil { 1458 err = handleNoOp(err) 1459 break 1460 } 1461 if validi && validj { 1462 a[i] = a[i] + b[j] 1463 } 1464 } 1465 return 1466 } 1467 1468 func AddIterU16(a []uint16, b []uint16, ait Iterator, bit Iterator) (err error) { 1469 var i, j int 1470 var validi, validj bool 1471 for { 1472 if i, validi, err = ait.NextValidity(); err != nil { 1473 err = handleNoOp(err) 1474 break 1475 } 1476 if j, validj, err = bit.NextValidity(); err != nil { 1477 err = handleNoOp(err) 1478 break 1479 } 1480 if validi && validj { 1481 a[i] = a[i] + b[j] 1482 } 1483 } 1484 return 1485 } 1486 1487 func AddIterU32(a []uint32, b []uint32, ait Iterator, bit Iterator) (err error) { 1488 var i, j int 1489 var validi, validj bool 1490 for { 1491 if i, validi, err = ait.NextValidity(); err != nil { 1492 err = handleNoOp(err) 1493 break 1494 } 1495 if j, validj, err = bit.NextValidity(); err != nil { 1496 err = handleNoOp(err) 1497 break 1498 } 1499 if validi && validj { 1500 a[i] = a[i] + b[j] 1501 } 1502 } 1503 return 1504 } 1505 1506 func AddIterU64(a []uint64, b []uint64, ait Iterator, bit Iterator) (err error) { 1507 var i, j int 1508 var validi, validj bool 1509 for { 1510 if i, validi, err = ait.NextValidity(); err != nil { 1511 err = handleNoOp(err) 1512 break 1513 } 1514 if j, validj, err = bit.NextValidity(); err != nil { 1515 err = handleNoOp(err) 1516 break 1517 } 1518 if validi && validj { 1519 a[i] = a[i] + b[j] 1520 } 1521 } 1522 return 1523 } 1524 1525 func AddIterF32(a []float32, b []float32, ait Iterator, bit Iterator) (err error) { 1526 var i, j int 1527 var validi, validj bool 1528 for { 1529 if i, validi, err = ait.NextValidity(); err != nil { 1530 err = handleNoOp(err) 1531 break 1532 } 1533 if j, validj, err = bit.NextValidity(); err != nil { 1534 err = handleNoOp(err) 1535 break 1536 } 1537 if validi && validj { 1538 a[i] = a[i] + b[j] 1539 } 1540 } 1541 return 1542 } 1543 1544 func AddIterF64(a []float64, b []float64, ait Iterator, bit Iterator) (err error) { 1545 var i, j int 1546 var validi, validj bool 1547 for { 1548 if i, validi, err = ait.NextValidity(); err != nil { 1549 err = handleNoOp(err) 1550 break 1551 } 1552 if j, validj, err = bit.NextValidity(); err != nil { 1553 err = handleNoOp(err) 1554 break 1555 } 1556 if validi && validj { 1557 a[i] = a[i] + b[j] 1558 } 1559 } 1560 return 1561 } 1562 1563 func AddIterC64(a []complex64, b []complex64, ait Iterator, bit Iterator) (err error) { 1564 var i, j int 1565 var validi, validj bool 1566 for { 1567 if i, validi, err = ait.NextValidity(); err != nil { 1568 err = handleNoOp(err) 1569 break 1570 } 1571 if j, validj, err = bit.NextValidity(); err != nil { 1572 err = handleNoOp(err) 1573 break 1574 } 1575 if validi && validj { 1576 a[i] = a[i] + b[j] 1577 } 1578 } 1579 return 1580 } 1581 1582 func AddIterC128(a []complex128, b []complex128, ait Iterator, bit Iterator) (err error) { 1583 var i, j int 1584 var validi, validj bool 1585 for { 1586 if i, validi, err = ait.NextValidity(); err != nil { 1587 err = handleNoOp(err) 1588 break 1589 } 1590 if j, validj, err = bit.NextValidity(); err != nil { 1591 err = handleNoOp(err) 1592 break 1593 } 1594 if validi && validj { 1595 a[i] = a[i] + b[j] 1596 } 1597 } 1598 return 1599 } 1600 1601 func AddIterStr(a []string, b []string, ait Iterator, bit Iterator) (err error) { 1602 var i, j int 1603 var validi, validj bool 1604 for { 1605 if i, validi, err = ait.NextValidity(); err != nil { 1606 err = handleNoOp(err) 1607 break 1608 } 1609 if j, validj, err = bit.NextValidity(); err != nil { 1610 err = handleNoOp(err) 1611 break 1612 } 1613 if validi && validj { 1614 a[i] = a[i] + b[j] 1615 } 1616 } 1617 return 1618 } 1619 1620 func SubIterI(a []int, b []int, ait Iterator, bit Iterator) (err error) { 1621 var i, j int 1622 var validi, validj bool 1623 for { 1624 if i, validi, err = ait.NextValidity(); err != nil { 1625 err = handleNoOp(err) 1626 break 1627 } 1628 if j, validj, err = bit.NextValidity(); err != nil { 1629 err = handleNoOp(err) 1630 break 1631 } 1632 if validi && validj { 1633 a[i] = a[i] - b[j] 1634 } 1635 } 1636 return 1637 } 1638 1639 func SubIterI8(a []int8, b []int8, ait Iterator, bit Iterator) (err error) { 1640 var i, j int 1641 var validi, validj bool 1642 for { 1643 if i, validi, err = ait.NextValidity(); err != nil { 1644 err = handleNoOp(err) 1645 break 1646 } 1647 if j, validj, err = bit.NextValidity(); err != nil { 1648 err = handleNoOp(err) 1649 break 1650 } 1651 if validi && validj { 1652 a[i] = a[i] - b[j] 1653 } 1654 } 1655 return 1656 } 1657 1658 func SubIterI16(a []int16, b []int16, ait Iterator, bit Iterator) (err error) { 1659 var i, j int 1660 var validi, validj bool 1661 for { 1662 if i, validi, err = ait.NextValidity(); err != nil { 1663 err = handleNoOp(err) 1664 break 1665 } 1666 if j, validj, err = bit.NextValidity(); err != nil { 1667 err = handleNoOp(err) 1668 break 1669 } 1670 if validi && validj { 1671 a[i] = a[i] - b[j] 1672 } 1673 } 1674 return 1675 } 1676 1677 func SubIterI32(a []int32, b []int32, ait Iterator, bit Iterator) (err error) { 1678 var i, j int 1679 var validi, validj bool 1680 for { 1681 if i, validi, err = ait.NextValidity(); err != nil { 1682 err = handleNoOp(err) 1683 break 1684 } 1685 if j, validj, err = bit.NextValidity(); err != nil { 1686 err = handleNoOp(err) 1687 break 1688 } 1689 if validi && validj { 1690 a[i] = a[i] - b[j] 1691 } 1692 } 1693 return 1694 } 1695 1696 func SubIterI64(a []int64, b []int64, ait Iterator, bit Iterator) (err error) { 1697 var i, j int 1698 var validi, validj bool 1699 for { 1700 if i, validi, err = ait.NextValidity(); err != nil { 1701 err = handleNoOp(err) 1702 break 1703 } 1704 if j, validj, err = bit.NextValidity(); err != nil { 1705 err = handleNoOp(err) 1706 break 1707 } 1708 if validi && validj { 1709 a[i] = a[i] - b[j] 1710 } 1711 } 1712 return 1713 } 1714 1715 func SubIterU(a []uint, b []uint, ait Iterator, bit Iterator) (err error) { 1716 var i, j int 1717 var validi, validj bool 1718 for { 1719 if i, validi, err = ait.NextValidity(); err != nil { 1720 err = handleNoOp(err) 1721 break 1722 } 1723 if j, validj, err = bit.NextValidity(); err != nil { 1724 err = handleNoOp(err) 1725 break 1726 } 1727 if validi && validj { 1728 a[i] = a[i] - b[j] 1729 } 1730 } 1731 return 1732 } 1733 1734 func SubIterU8(a []uint8, b []uint8, ait Iterator, bit Iterator) (err error) { 1735 var i, j int 1736 var validi, validj bool 1737 for { 1738 if i, validi, err = ait.NextValidity(); err != nil { 1739 err = handleNoOp(err) 1740 break 1741 } 1742 if j, validj, err = bit.NextValidity(); err != nil { 1743 err = handleNoOp(err) 1744 break 1745 } 1746 if validi && validj { 1747 a[i] = a[i] - b[j] 1748 } 1749 } 1750 return 1751 } 1752 1753 func SubIterU16(a []uint16, b []uint16, ait Iterator, bit Iterator) (err error) { 1754 var i, j int 1755 var validi, validj bool 1756 for { 1757 if i, validi, err = ait.NextValidity(); err != nil { 1758 err = handleNoOp(err) 1759 break 1760 } 1761 if j, validj, err = bit.NextValidity(); err != nil { 1762 err = handleNoOp(err) 1763 break 1764 } 1765 if validi && validj { 1766 a[i] = a[i] - b[j] 1767 } 1768 } 1769 return 1770 } 1771 1772 func SubIterU32(a []uint32, b []uint32, ait Iterator, bit Iterator) (err error) { 1773 var i, j int 1774 var validi, validj bool 1775 for { 1776 if i, validi, err = ait.NextValidity(); err != nil { 1777 err = handleNoOp(err) 1778 break 1779 } 1780 if j, validj, err = bit.NextValidity(); err != nil { 1781 err = handleNoOp(err) 1782 break 1783 } 1784 if validi && validj { 1785 a[i] = a[i] - b[j] 1786 } 1787 } 1788 return 1789 } 1790 1791 func SubIterU64(a []uint64, b []uint64, ait Iterator, bit Iterator) (err error) { 1792 var i, j int 1793 var validi, validj bool 1794 for { 1795 if i, validi, err = ait.NextValidity(); err != nil { 1796 err = handleNoOp(err) 1797 break 1798 } 1799 if j, validj, err = bit.NextValidity(); err != nil { 1800 err = handleNoOp(err) 1801 break 1802 } 1803 if validi && validj { 1804 a[i] = a[i] - b[j] 1805 } 1806 } 1807 return 1808 } 1809 1810 func SubIterF32(a []float32, b []float32, ait Iterator, bit Iterator) (err error) { 1811 var i, j int 1812 var validi, validj bool 1813 for { 1814 if i, validi, err = ait.NextValidity(); err != nil { 1815 err = handleNoOp(err) 1816 break 1817 } 1818 if j, validj, err = bit.NextValidity(); err != nil { 1819 err = handleNoOp(err) 1820 break 1821 } 1822 if validi && validj { 1823 a[i] = a[i] - b[j] 1824 } 1825 } 1826 return 1827 } 1828 1829 func SubIterF64(a []float64, b []float64, ait Iterator, bit Iterator) (err error) { 1830 var i, j int 1831 var validi, validj bool 1832 for { 1833 if i, validi, err = ait.NextValidity(); err != nil { 1834 err = handleNoOp(err) 1835 break 1836 } 1837 if j, validj, err = bit.NextValidity(); err != nil { 1838 err = handleNoOp(err) 1839 break 1840 } 1841 if validi && validj { 1842 a[i] = a[i] - b[j] 1843 } 1844 } 1845 return 1846 } 1847 1848 func SubIterC64(a []complex64, b []complex64, ait Iterator, bit Iterator) (err error) { 1849 var i, j int 1850 var validi, validj bool 1851 for { 1852 if i, validi, err = ait.NextValidity(); err != nil { 1853 err = handleNoOp(err) 1854 break 1855 } 1856 if j, validj, err = bit.NextValidity(); err != nil { 1857 err = handleNoOp(err) 1858 break 1859 } 1860 if validi && validj { 1861 a[i] = a[i] - b[j] 1862 } 1863 } 1864 return 1865 } 1866 1867 func SubIterC128(a []complex128, b []complex128, ait Iterator, bit Iterator) (err error) { 1868 var i, j int 1869 var validi, validj bool 1870 for { 1871 if i, validi, err = ait.NextValidity(); err != nil { 1872 err = handleNoOp(err) 1873 break 1874 } 1875 if j, validj, err = bit.NextValidity(); err != nil { 1876 err = handleNoOp(err) 1877 break 1878 } 1879 if validi && validj { 1880 a[i] = a[i] - b[j] 1881 } 1882 } 1883 return 1884 } 1885 1886 func MulIterI(a []int, b []int, ait Iterator, bit Iterator) (err error) { 1887 var i, j int 1888 var validi, validj bool 1889 for { 1890 if i, validi, err = ait.NextValidity(); err != nil { 1891 err = handleNoOp(err) 1892 break 1893 } 1894 if j, validj, err = bit.NextValidity(); err != nil { 1895 err = handleNoOp(err) 1896 break 1897 } 1898 if validi && validj { 1899 a[i] = a[i] * b[j] 1900 } 1901 } 1902 return 1903 } 1904 1905 func MulIterI8(a []int8, b []int8, ait Iterator, bit Iterator) (err error) { 1906 var i, j int 1907 var validi, validj bool 1908 for { 1909 if i, validi, err = ait.NextValidity(); err != nil { 1910 err = handleNoOp(err) 1911 break 1912 } 1913 if j, validj, err = bit.NextValidity(); err != nil { 1914 err = handleNoOp(err) 1915 break 1916 } 1917 if validi && validj { 1918 a[i] = a[i] * b[j] 1919 } 1920 } 1921 return 1922 } 1923 1924 func MulIterI16(a []int16, b []int16, ait Iterator, bit Iterator) (err error) { 1925 var i, j int 1926 var validi, validj bool 1927 for { 1928 if i, validi, err = ait.NextValidity(); err != nil { 1929 err = handleNoOp(err) 1930 break 1931 } 1932 if j, validj, err = bit.NextValidity(); err != nil { 1933 err = handleNoOp(err) 1934 break 1935 } 1936 if validi && validj { 1937 a[i] = a[i] * b[j] 1938 } 1939 } 1940 return 1941 } 1942 1943 func MulIterI32(a []int32, b []int32, ait Iterator, bit Iterator) (err error) { 1944 var i, j int 1945 var validi, validj bool 1946 for { 1947 if i, validi, err = ait.NextValidity(); err != nil { 1948 err = handleNoOp(err) 1949 break 1950 } 1951 if j, validj, err = bit.NextValidity(); err != nil { 1952 err = handleNoOp(err) 1953 break 1954 } 1955 if validi && validj { 1956 a[i] = a[i] * b[j] 1957 } 1958 } 1959 return 1960 } 1961 1962 func MulIterI64(a []int64, b []int64, ait Iterator, bit Iterator) (err error) { 1963 var i, j int 1964 var validi, validj bool 1965 for { 1966 if i, validi, err = ait.NextValidity(); err != nil { 1967 err = handleNoOp(err) 1968 break 1969 } 1970 if j, validj, err = bit.NextValidity(); err != nil { 1971 err = handleNoOp(err) 1972 break 1973 } 1974 if validi && validj { 1975 a[i] = a[i] * b[j] 1976 } 1977 } 1978 return 1979 } 1980 1981 func MulIterU(a []uint, b []uint, ait Iterator, bit Iterator) (err error) { 1982 var i, j int 1983 var validi, validj bool 1984 for { 1985 if i, validi, err = ait.NextValidity(); err != nil { 1986 err = handleNoOp(err) 1987 break 1988 } 1989 if j, validj, err = bit.NextValidity(); err != nil { 1990 err = handleNoOp(err) 1991 break 1992 } 1993 if validi && validj { 1994 a[i] = a[i] * b[j] 1995 } 1996 } 1997 return 1998 } 1999 2000 func MulIterU8(a []uint8, b []uint8, ait Iterator, bit Iterator) (err error) { 2001 var i, j int 2002 var validi, validj bool 2003 for { 2004 if i, validi, err = ait.NextValidity(); err != nil { 2005 err = handleNoOp(err) 2006 break 2007 } 2008 if j, validj, err = bit.NextValidity(); err != nil { 2009 err = handleNoOp(err) 2010 break 2011 } 2012 if validi && validj { 2013 a[i] = a[i] * b[j] 2014 } 2015 } 2016 return 2017 } 2018 2019 func MulIterU16(a []uint16, b []uint16, ait Iterator, bit Iterator) (err error) { 2020 var i, j int 2021 var validi, validj bool 2022 for { 2023 if i, validi, err = ait.NextValidity(); err != nil { 2024 err = handleNoOp(err) 2025 break 2026 } 2027 if j, validj, err = bit.NextValidity(); err != nil { 2028 err = handleNoOp(err) 2029 break 2030 } 2031 if validi && validj { 2032 a[i] = a[i] * b[j] 2033 } 2034 } 2035 return 2036 } 2037 2038 func MulIterU32(a []uint32, b []uint32, ait Iterator, bit Iterator) (err error) { 2039 var i, j int 2040 var validi, validj bool 2041 for { 2042 if i, validi, err = ait.NextValidity(); err != nil { 2043 err = handleNoOp(err) 2044 break 2045 } 2046 if j, validj, err = bit.NextValidity(); err != nil { 2047 err = handleNoOp(err) 2048 break 2049 } 2050 if validi && validj { 2051 a[i] = a[i] * b[j] 2052 } 2053 } 2054 return 2055 } 2056 2057 func MulIterU64(a []uint64, b []uint64, ait Iterator, bit Iterator) (err error) { 2058 var i, j int 2059 var validi, validj bool 2060 for { 2061 if i, validi, err = ait.NextValidity(); err != nil { 2062 err = handleNoOp(err) 2063 break 2064 } 2065 if j, validj, err = bit.NextValidity(); err != nil { 2066 err = handleNoOp(err) 2067 break 2068 } 2069 if validi && validj { 2070 a[i] = a[i] * b[j] 2071 } 2072 } 2073 return 2074 } 2075 2076 func MulIterF32(a []float32, b []float32, ait Iterator, bit Iterator) (err error) { 2077 var i, j int 2078 var validi, validj bool 2079 for { 2080 if i, validi, err = ait.NextValidity(); err != nil { 2081 err = handleNoOp(err) 2082 break 2083 } 2084 if j, validj, err = bit.NextValidity(); err != nil { 2085 err = handleNoOp(err) 2086 break 2087 } 2088 if validi && validj { 2089 a[i] = a[i] * b[j] 2090 } 2091 } 2092 return 2093 } 2094 2095 func MulIterF64(a []float64, b []float64, ait Iterator, bit Iterator) (err error) { 2096 var i, j int 2097 var validi, validj bool 2098 for { 2099 if i, validi, err = ait.NextValidity(); err != nil { 2100 err = handleNoOp(err) 2101 break 2102 } 2103 if j, validj, err = bit.NextValidity(); err != nil { 2104 err = handleNoOp(err) 2105 break 2106 } 2107 if validi && validj { 2108 a[i] = a[i] * b[j] 2109 } 2110 } 2111 return 2112 } 2113 2114 func MulIterC64(a []complex64, b []complex64, ait Iterator, bit Iterator) (err error) { 2115 var i, j int 2116 var validi, validj bool 2117 for { 2118 if i, validi, err = ait.NextValidity(); err != nil { 2119 err = handleNoOp(err) 2120 break 2121 } 2122 if j, validj, err = bit.NextValidity(); err != nil { 2123 err = handleNoOp(err) 2124 break 2125 } 2126 if validi && validj { 2127 a[i] = a[i] * b[j] 2128 } 2129 } 2130 return 2131 } 2132 2133 func MulIterC128(a []complex128, b []complex128, ait Iterator, bit Iterator) (err error) { 2134 var i, j int 2135 var validi, validj bool 2136 for { 2137 if i, validi, err = ait.NextValidity(); err != nil { 2138 err = handleNoOp(err) 2139 break 2140 } 2141 if j, validj, err = bit.NextValidity(); err != nil { 2142 err = handleNoOp(err) 2143 break 2144 } 2145 if validi && validj { 2146 a[i] = a[i] * b[j] 2147 } 2148 } 2149 return 2150 } 2151 2152 func DivIterI(a []int, b []int, ait Iterator, bit Iterator) (err error) { 2153 var errs errorIndices 2154 var i, j int 2155 var validi, validj bool 2156 for { 2157 if i, validi, err = ait.NextValidity(); err != nil { 2158 err = handleNoOp(err) 2159 break 2160 } 2161 if j, validj, err = bit.NextValidity(); err != nil { 2162 err = handleNoOp(err) 2163 break 2164 } 2165 if validi && validj { 2166 if b[j] == 0 { 2167 errs = append(errs, i) 2168 a[i] = 0 2169 continue 2170 } 2171 a[i] = a[i] / b[j] 2172 } 2173 } 2174 if err != nil { 2175 return 2176 } 2177 if len(errs) > 0 { 2178 return errs 2179 } 2180 return nil 2181 } 2182 2183 func DivIterI8(a []int8, b []int8, ait Iterator, bit Iterator) (err error) { 2184 var errs errorIndices 2185 var i, j int 2186 var validi, validj bool 2187 for { 2188 if i, validi, err = ait.NextValidity(); err != nil { 2189 err = handleNoOp(err) 2190 break 2191 } 2192 if j, validj, err = bit.NextValidity(); err != nil { 2193 err = handleNoOp(err) 2194 break 2195 } 2196 if validi && validj { 2197 if b[j] == 0 { 2198 errs = append(errs, i) 2199 a[i] = 0 2200 continue 2201 } 2202 a[i] = a[i] / b[j] 2203 } 2204 } 2205 if err != nil { 2206 return 2207 } 2208 if len(errs) > 0 { 2209 return errs 2210 } 2211 return nil 2212 } 2213 2214 func DivIterI16(a []int16, b []int16, ait Iterator, bit Iterator) (err error) { 2215 var errs errorIndices 2216 var i, j int 2217 var validi, validj bool 2218 for { 2219 if i, validi, err = ait.NextValidity(); err != nil { 2220 err = handleNoOp(err) 2221 break 2222 } 2223 if j, validj, err = bit.NextValidity(); err != nil { 2224 err = handleNoOp(err) 2225 break 2226 } 2227 if validi && validj { 2228 if b[j] == 0 { 2229 errs = append(errs, i) 2230 a[i] = 0 2231 continue 2232 } 2233 a[i] = a[i] / b[j] 2234 } 2235 } 2236 if err != nil { 2237 return 2238 } 2239 if len(errs) > 0 { 2240 return errs 2241 } 2242 return nil 2243 } 2244 2245 func DivIterI32(a []int32, b []int32, ait Iterator, bit Iterator) (err error) { 2246 var errs errorIndices 2247 var i, j int 2248 var validi, validj bool 2249 for { 2250 if i, validi, err = ait.NextValidity(); err != nil { 2251 err = handleNoOp(err) 2252 break 2253 } 2254 if j, validj, err = bit.NextValidity(); err != nil { 2255 err = handleNoOp(err) 2256 break 2257 } 2258 if validi && validj { 2259 if b[j] == 0 { 2260 errs = append(errs, i) 2261 a[i] = 0 2262 continue 2263 } 2264 a[i] = a[i] / b[j] 2265 } 2266 } 2267 if err != nil { 2268 return 2269 } 2270 if len(errs) > 0 { 2271 return errs 2272 } 2273 return nil 2274 } 2275 2276 func DivIterI64(a []int64, b []int64, ait Iterator, bit Iterator) (err error) { 2277 var errs errorIndices 2278 var i, j int 2279 var validi, validj bool 2280 for { 2281 if i, validi, err = ait.NextValidity(); err != nil { 2282 err = handleNoOp(err) 2283 break 2284 } 2285 if j, validj, err = bit.NextValidity(); err != nil { 2286 err = handleNoOp(err) 2287 break 2288 } 2289 if validi && validj { 2290 if b[j] == 0 { 2291 errs = append(errs, i) 2292 a[i] = 0 2293 continue 2294 } 2295 a[i] = a[i] / b[j] 2296 } 2297 } 2298 if err != nil { 2299 return 2300 } 2301 if len(errs) > 0 { 2302 return errs 2303 } 2304 return nil 2305 } 2306 2307 func DivIterU(a []uint, b []uint, ait Iterator, bit Iterator) (err error) { 2308 var errs errorIndices 2309 var i, j int 2310 var validi, validj bool 2311 for { 2312 if i, validi, err = ait.NextValidity(); err != nil { 2313 err = handleNoOp(err) 2314 break 2315 } 2316 if j, validj, err = bit.NextValidity(); err != nil { 2317 err = handleNoOp(err) 2318 break 2319 } 2320 if validi && validj { 2321 if b[j] == 0 { 2322 errs = append(errs, i) 2323 a[i] = 0 2324 continue 2325 } 2326 a[i] = a[i] / b[j] 2327 } 2328 } 2329 if err != nil { 2330 return 2331 } 2332 if len(errs) > 0 { 2333 return errs 2334 } 2335 return nil 2336 } 2337 2338 func DivIterU8(a []uint8, b []uint8, ait Iterator, bit Iterator) (err error) { 2339 var errs errorIndices 2340 var i, j int 2341 var validi, validj bool 2342 for { 2343 if i, validi, err = ait.NextValidity(); err != nil { 2344 err = handleNoOp(err) 2345 break 2346 } 2347 if j, validj, err = bit.NextValidity(); err != nil { 2348 err = handleNoOp(err) 2349 break 2350 } 2351 if validi && validj { 2352 if b[j] == 0 { 2353 errs = append(errs, i) 2354 a[i] = 0 2355 continue 2356 } 2357 a[i] = a[i] / b[j] 2358 } 2359 } 2360 if err != nil { 2361 return 2362 } 2363 if len(errs) > 0 { 2364 return errs 2365 } 2366 return nil 2367 } 2368 2369 func DivIterU16(a []uint16, b []uint16, ait Iterator, bit Iterator) (err error) { 2370 var errs errorIndices 2371 var i, j int 2372 var validi, validj bool 2373 for { 2374 if i, validi, err = ait.NextValidity(); err != nil { 2375 err = handleNoOp(err) 2376 break 2377 } 2378 if j, validj, err = bit.NextValidity(); err != nil { 2379 err = handleNoOp(err) 2380 break 2381 } 2382 if validi && validj { 2383 if b[j] == 0 { 2384 errs = append(errs, i) 2385 a[i] = 0 2386 continue 2387 } 2388 a[i] = a[i] / b[j] 2389 } 2390 } 2391 if err != nil { 2392 return 2393 } 2394 if len(errs) > 0 { 2395 return errs 2396 } 2397 return nil 2398 } 2399 2400 func DivIterU32(a []uint32, b []uint32, ait Iterator, bit Iterator) (err error) { 2401 var errs errorIndices 2402 var i, j int 2403 var validi, validj bool 2404 for { 2405 if i, validi, err = ait.NextValidity(); err != nil { 2406 err = handleNoOp(err) 2407 break 2408 } 2409 if j, validj, err = bit.NextValidity(); err != nil { 2410 err = handleNoOp(err) 2411 break 2412 } 2413 if validi && validj { 2414 if b[j] == 0 { 2415 errs = append(errs, i) 2416 a[i] = 0 2417 continue 2418 } 2419 a[i] = a[i] / b[j] 2420 } 2421 } 2422 if err != nil { 2423 return 2424 } 2425 if len(errs) > 0 { 2426 return errs 2427 } 2428 return nil 2429 } 2430 2431 func DivIterU64(a []uint64, b []uint64, ait Iterator, bit Iterator) (err error) { 2432 var errs errorIndices 2433 var i, j int 2434 var validi, validj bool 2435 for { 2436 if i, validi, err = ait.NextValidity(); err != nil { 2437 err = handleNoOp(err) 2438 break 2439 } 2440 if j, validj, err = bit.NextValidity(); err != nil { 2441 err = handleNoOp(err) 2442 break 2443 } 2444 if validi && validj { 2445 if b[j] == 0 { 2446 errs = append(errs, i) 2447 a[i] = 0 2448 continue 2449 } 2450 a[i] = a[i] / b[j] 2451 } 2452 } 2453 if err != nil { 2454 return 2455 } 2456 if len(errs) > 0 { 2457 return errs 2458 } 2459 return nil 2460 } 2461 2462 func DivIterF32(a []float32, b []float32, ait Iterator, bit Iterator) (err error) { 2463 var i, j int 2464 var validi, validj bool 2465 for { 2466 if i, validi, err = ait.NextValidity(); err != nil { 2467 err = handleNoOp(err) 2468 break 2469 } 2470 if j, validj, err = bit.NextValidity(); err != nil { 2471 err = handleNoOp(err) 2472 break 2473 } 2474 if validi && validj { 2475 a[i] = a[i] / b[j] 2476 } 2477 } 2478 return 2479 } 2480 2481 func DivIterF64(a []float64, b []float64, ait Iterator, bit Iterator) (err error) { 2482 var i, j int 2483 var validi, validj bool 2484 for { 2485 if i, validi, err = ait.NextValidity(); err != nil { 2486 err = handleNoOp(err) 2487 break 2488 } 2489 if j, validj, err = bit.NextValidity(); err != nil { 2490 err = handleNoOp(err) 2491 break 2492 } 2493 if validi && validj { 2494 a[i] = a[i] / b[j] 2495 } 2496 } 2497 return 2498 } 2499 2500 func DivIterC64(a []complex64, b []complex64, ait Iterator, bit Iterator) (err error) { 2501 var i, j int 2502 var validi, validj bool 2503 for { 2504 if i, validi, err = ait.NextValidity(); err != nil { 2505 err = handleNoOp(err) 2506 break 2507 } 2508 if j, validj, err = bit.NextValidity(); err != nil { 2509 err = handleNoOp(err) 2510 break 2511 } 2512 if validi && validj { 2513 a[i] = a[i] / b[j] 2514 } 2515 } 2516 return 2517 } 2518 2519 func DivIterC128(a []complex128, b []complex128, ait Iterator, bit Iterator) (err error) { 2520 var i, j int 2521 var validi, validj bool 2522 for { 2523 if i, validi, err = ait.NextValidity(); err != nil { 2524 err = handleNoOp(err) 2525 break 2526 } 2527 if j, validj, err = bit.NextValidity(); err != nil { 2528 err = handleNoOp(err) 2529 break 2530 } 2531 if validi && validj { 2532 a[i] = a[i] / b[j] 2533 } 2534 } 2535 return 2536 } 2537 2538 func PowIterF32(a []float32, b []float32, ait Iterator, bit Iterator) (err error) { 2539 var i, j int 2540 var validi, validj bool 2541 for { 2542 if i, validi, err = ait.NextValidity(); err != nil { 2543 err = handleNoOp(err) 2544 break 2545 } 2546 if j, validj, err = bit.NextValidity(); err != nil { 2547 err = handleNoOp(err) 2548 break 2549 } 2550 if validi && validj { 2551 a[i] = math32.Pow(a[i], b[j]) 2552 } 2553 } 2554 return 2555 } 2556 2557 func PowIterF64(a []float64, b []float64, ait Iterator, bit Iterator) (err error) { 2558 var i, j int 2559 var validi, validj bool 2560 for { 2561 if i, validi, err = ait.NextValidity(); err != nil { 2562 err = handleNoOp(err) 2563 break 2564 } 2565 if j, validj, err = bit.NextValidity(); err != nil { 2566 err = handleNoOp(err) 2567 break 2568 } 2569 if validi && validj { 2570 a[i] = math.Pow(a[i], b[j]) 2571 } 2572 } 2573 return 2574 } 2575 2576 func PowIterC64(a []complex64, b []complex64, ait Iterator, bit Iterator) (err error) { 2577 var i, j int 2578 var validi, validj bool 2579 for { 2580 if i, validi, err = ait.NextValidity(); err != nil { 2581 err = handleNoOp(err) 2582 break 2583 } 2584 if j, validj, err = bit.NextValidity(); err != nil { 2585 err = handleNoOp(err) 2586 break 2587 } 2588 if validi && validj { 2589 a[i] = complex64(cmplx.Pow(complex128(a[i]), complex128(b[j]))) 2590 } 2591 } 2592 return 2593 } 2594 2595 func PowIterC128(a []complex128, b []complex128, ait Iterator, bit Iterator) (err error) { 2596 var i, j int 2597 var validi, validj bool 2598 for { 2599 if i, validi, err = ait.NextValidity(); err != nil { 2600 err = handleNoOp(err) 2601 break 2602 } 2603 if j, validj, err = bit.NextValidity(); err != nil { 2604 err = handleNoOp(err) 2605 break 2606 } 2607 if validi && validj { 2608 a[i] = cmplx.Pow(a[i], b[j]) 2609 } 2610 } 2611 return 2612 } 2613 2614 func ModIterI(a []int, b []int, ait Iterator, bit Iterator) (err error) { 2615 var i, j int 2616 var validi, validj bool 2617 for { 2618 if i, validi, err = ait.NextValidity(); err != nil { 2619 err = handleNoOp(err) 2620 break 2621 } 2622 if j, validj, err = bit.NextValidity(); err != nil { 2623 err = handleNoOp(err) 2624 break 2625 } 2626 if validi && validj { 2627 a[i] = a[i] % b[j] 2628 } 2629 } 2630 return 2631 } 2632 2633 func ModIterI8(a []int8, b []int8, ait Iterator, bit Iterator) (err error) { 2634 var i, j int 2635 var validi, validj bool 2636 for { 2637 if i, validi, err = ait.NextValidity(); err != nil { 2638 err = handleNoOp(err) 2639 break 2640 } 2641 if j, validj, err = bit.NextValidity(); err != nil { 2642 err = handleNoOp(err) 2643 break 2644 } 2645 if validi && validj { 2646 a[i] = a[i] % b[j] 2647 } 2648 } 2649 return 2650 } 2651 2652 func ModIterI16(a []int16, b []int16, ait Iterator, bit Iterator) (err error) { 2653 var i, j int 2654 var validi, validj bool 2655 for { 2656 if i, validi, err = ait.NextValidity(); err != nil { 2657 err = handleNoOp(err) 2658 break 2659 } 2660 if j, validj, err = bit.NextValidity(); err != nil { 2661 err = handleNoOp(err) 2662 break 2663 } 2664 if validi && validj { 2665 a[i] = a[i] % b[j] 2666 } 2667 } 2668 return 2669 } 2670 2671 func ModIterI32(a []int32, b []int32, ait Iterator, bit Iterator) (err error) { 2672 var i, j int 2673 var validi, validj bool 2674 for { 2675 if i, validi, err = ait.NextValidity(); err != nil { 2676 err = handleNoOp(err) 2677 break 2678 } 2679 if j, validj, err = bit.NextValidity(); err != nil { 2680 err = handleNoOp(err) 2681 break 2682 } 2683 if validi && validj { 2684 a[i] = a[i] % b[j] 2685 } 2686 } 2687 return 2688 } 2689 2690 func ModIterI64(a []int64, b []int64, ait Iterator, bit Iterator) (err error) { 2691 var i, j int 2692 var validi, validj bool 2693 for { 2694 if i, validi, err = ait.NextValidity(); err != nil { 2695 err = handleNoOp(err) 2696 break 2697 } 2698 if j, validj, err = bit.NextValidity(); err != nil { 2699 err = handleNoOp(err) 2700 break 2701 } 2702 if validi && validj { 2703 a[i] = a[i] % b[j] 2704 } 2705 } 2706 return 2707 } 2708 2709 func ModIterU(a []uint, b []uint, ait Iterator, bit Iterator) (err error) { 2710 var i, j int 2711 var validi, validj bool 2712 for { 2713 if i, validi, err = ait.NextValidity(); err != nil { 2714 err = handleNoOp(err) 2715 break 2716 } 2717 if j, validj, err = bit.NextValidity(); err != nil { 2718 err = handleNoOp(err) 2719 break 2720 } 2721 if validi && validj { 2722 a[i] = a[i] % b[j] 2723 } 2724 } 2725 return 2726 } 2727 2728 func ModIterU8(a []uint8, b []uint8, ait Iterator, bit Iterator) (err error) { 2729 var i, j int 2730 var validi, validj bool 2731 for { 2732 if i, validi, err = ait.NextValidity(); err != nil { 2733 err = handleNoOp(err) 2734 break 2735 } 2736 if j, validj, err = bit.NextValidity(); err != nil { 2737 err = handleNoOp(err) 2738 break 2739 } 2740 if validi && validj { 2741 a[i] = a[i] % b[j] 2742 } 2743 } 2744 return 2745 } 2746 2747 func ModIterU16(a []uint16, b []uint16, ait Iterator, bit Iterator) (err error) { 2748 var i, j int 2749 var validi, validj bool 2750 for { 2751 if i, validi, err = ait.NextValidity(); err != nil { 2752 err = handleNoOp(err) 2753 break 2754 } 2755 if j, validj, err = bit.NextValidity(); err != nil { 2756 err = handleNoOp(err) 2757 break 2758 } 2759 if validi && validj { 2760 a[i] = a[i] % b[j] 2761 } 2762 } 2763 return 2764 } 2765 2766 func ModIterU32(a []uint32, b []uint32, ait Iterator, bit Iterator) (err error) { 2767 var i, j int 2768 var validi, validj bool 2769 for { 2770 if i, validi, err = ait.NextValidity(); err != nil { 2771 err = handleNoOp(err) 2772 break 2773 } 2774 if j, validj, err = bit.NextValidity(); err != nil { 2775 err = handleNoOp(err) 2776 break 2777 } 2778 if validi && validj { 2779 a[i] = a[i] % b[j] 2780 } 2781 } 2782 return 2783 } 2784 2785 func ModIterU64(a []uint64, b []uint64, ait Iterator, bit Iterator) (err error) { 2786 var i, j int 2787 var validi, validj bool 2788 for { 2789 if i, validi, err = ait.NextValidity(); err != nil { 2790 err = handleNoOp(err) 2791 break 2792 } 2793 if j, validj, err = bit.NextValidity(); err != nil { 2794 err = handleNoOp(err) 2795 break 2796 } 2797 if validi && validj { 2798 a[i] = a[i] % b[j] 2799 } 2800 } 2801 return 2802 } 2803 2804 func ModIterF32(a []float32, b []float32, ait Iterator, bit Iterator) (err error) { 2805 var i, j int 2806 var validi, validj bool 2807 for { 2808 if i, validi, err = ait.NextValidity(); err != nil { 2809 err = handleNoOp(err) 2810 break 2811 } 2812 if j, validj, err = bit.NextValidity(); err != nil { 2813 err = handleNoOp(err) 2814 break 2815 } 2816 if validi && validj { 2817 a[i] = math32.Mod(a[i], b[j]) 2818 } 2819 } 2820 return 2821 } 2822 2823 func ModIterF64(a []float64, b []float64, ait Iterator, bit Iterator) (err error) { 2824 var i, j int 2825 var validi, validj bool 2826 for { 2827 if i, validi, err = ait.NextValidity(); err != nil { 2828 err = handleNoOp(err) 2829 break 2830 } 2831 if j, validj, err = bit.NextValidity(); err != nil { 2832 err = handleNoOp(err) 2833 break 2834 } 2835 if validi && validj { 2836 a[i] = math.Mod(a[i], b[j]) 2837 } 2838 } 2839 return 2840 } 2841 2842 func AddIterIncrI(a []int, b []int, incr []int, ait Iterator, bit Iterator, iit Iterator) (err error) { 2843 var i, j, k int 2844 var validi, validj, validk bool 2845 for { 2846 if i, validi, err = ait.NextValidity(); err != nil { 2847 err = handleNoOp(err) 2848 break 2849 } 2850 if j, validj, err = bit.NextValidity(); err != nil { 2851 err = handleNoOp(err) 2852 break 2853 } 2854 if k, validk, err = iit.NextValidity(); err != nil { 2855 err = handleNoOp(err) 2856 break 2857 } 2858 if validi && validj && validk { 2859 incr[k] += a[i] + b[j] 2860 } 2861 } 2862 return 2863 } 2864 2865 func AddIterIncrI8(a []int8, b []int8, incr []int8, ait Iterator, bit Iterator, iit Iterator) (err error) { 2866 var i, j, k int 2867 var validi, validj, validk bool 2868 for { 2869 if i, validi, err = ait.NextValidity(); err != nil { 2870 err = handleNoOp(err) 2871 break 2872 } 2873 if j, validj, err = bit.NextValidity(); err != nil { 2874 err = handleNoOp(err) 2875 break 2876 } 2877 if k, validk, err = iit.NextValidity(); err != nil { 2878 err = handleNoOp(err) 2879 break 2880 } 2881 if validi && validj && validk { 2882 incr[k] += a[i] + b[j] 2883 } 2884 } 2885 return 2886 } 2887 2888 func AddIterIncrI16(a []int16, b []int16, incr []int16, ait Iterator, bit Iterator, iit Iterator) (err error) { 2889 var i, j, k int 2890 var validi, validj, validk bool 2891 for { 2892 if i, validi, err = ait.NextValidity(); err != nil { 2893 err = handleNoOp(err) 2894 break 2895 } 2896 if j, validj, err = bit.NextValidity(); err != nil { 2897 err = handleNoOp(err) 2898 break 2899 } 2900 if k, validk, err = iit.NextValidity(); err != nil { 2901 err = handleNoOp(err) 2902 break 2903 } 2904 if validi && validj && validk { 2905 incr[k] += a[i] + b[j] 2906 } 2907 } 2908 return 2909 } 2910 2911 func AddIterIncrI32(a []int32, b []int32, incr []int32, ait Iterator, bit Iterator, iit Iterator) (err error) { 2912 var i, j, k int 2913 var validi, validj, validk bool 2914 for { 2915 if i, validi, err = ait.NextValidity(); err != nil { 2916 err = handleNoOp(err) 2917 break 2918 } 2919 if j, validj, err = bit.NextValidity(); err != nil { 2920 err = handleNoOp(err) 2921 break 2922 } 2923 if k, validk, err = iit.NextValidity(); err != nil { 2924 err = handleNoOp(err) 2925 break 2926 } 2927 if validi && validj && validk { 2928 incr[k] += a[i] + b[j] 2929 } 2930 } 2931 return 2932 } 2933 2934 func AddIterIncrI64(a []int64, b []int64, incr []int64, ait Iterator, bit Iterator, iit Iterator) (err error) { 2935 var i, j, k int 2936 var validi, validj, validk bool 2937 for { 2938 if i, validi, err = ait.NextValidity(); err != nil { 2939 err = handleNoOp(err) 2940 break 2941 } 2942 if j, validj, err = bit.NextValidity(); err != nil { 2943 err = handleNoOp(err) 2944 break 2945 } 2946 if k, validk, err = iit.NextValidity(); err != nil { 2947 err = handleNoOp(err) 2948 break 2949 } 2950 if validi && validj && validk { 2951 incr[k] += a[i] + b[j] 2952 } 2953 } 2954 return 2955 } 2956 2957 func AddIterIncrU(a []uint, b []uint, incr []uint, ait Iterator, bit Iterator, iit Iterator) (err error) { 2958 var i, j, k int 2959 var validi, validj, validk bool 2960 for { 2961 if i, validi, err = ait.NextValidity(); err != nil { 2962 err = handleNoOp(err) 2963 break 2964 } 2965 if j, validj, err = bit.NextValidity(); err != nil { 2966 err = handleNoOp(err) 2967 break 2968 } 2969 if k, validk, err = iit.NextValidity(); err != nil { 2970 err = handleNoOp(err) 2971 break 2972 } 2973 if validi && validj && validk { 2974 incr[k] += a[i] + b[j] 2975 } 2976 } 2977 return 2978 } 2979 2980 func AddIterIncrU8(a []uint8, b []uint8, incr []uint8, ait Iterator, bit Iterator, iit Iterator) (err error) { 2981 var i, j, k int 2982 var validi, validj, validk bool 2983 for { 2984 if i, validi, err = ait.NextValidity(); err != nil { 2985 err = handleNoOp(err) 2986 break 2987 } 2988 if j, validj, err = bit.NextValidity(); err != nil { 2989 err = handleNoOp(err) 2990 break 2991 } 2992 if k, validk, err = iit.NextValidity(); err != nil { 2993 err = handleNoOp(err) 2994 break 2995 } 2996 if validi && validj && validk { 2997 incr[k] += a[i] + b[j] 2998 } 2999 } 3000 return 3001 } 3002 3003 func AddIterIncrU16(a []uint16, b []uint16, incr []uint16, ait Iterator, bit Iterator, iit Iterator) (err error) { 3004 var i, j, k int 3005 var validi, validj, validk bool 3006 for { 3007 if i, validi, err = ait.NextValidity(); err != nil { 3008 err = handleNoOp(err) 3009 break 3010 } 3011 if j, validj, err = bit.NextValidity(); err != nil { 3012 err = handleNoOp(err) 3013 break 3014 } 3015 if k, validk, err = iit.NextValidity(); err != nil { 3016 err = handleNoOp(err) 3017 break 3018 } 3019 if validi && validj && validk { 3020 incr[k] += a[i] + b[j] 3021 } 3022 } 3023 return 3024 } 3025 3026 func AddIterIncrU32(a []uint32, b []uint32, incr []uint32, ait Iterator, bit Iterator, iit Iterator) (err error) { 3027 var i, j, k int 3028 var validi, validj, validk bool 3029 for { 3030 if i, validi, err = ait.NextValidity(); err != nil { 3031 err = handleNoOp(err) 3032 break 3033 } 3034 if j, validj, err = bit.NextValidity(); err != nil { 3035 err = handleNoOp(err) 3036 break 3037 } 3038 if k, validk, err = iit.NextValidity(); err != nil { 3039 err = handleNoOp(err) 3040 break 3041 } 3042 if validi && validj && validk { 3043 incr[k] += a[i] + b[j] 3044 } 3045 } 3046 return 3047 } 3048 3049 func AddIterIncrU64(a []uint64, b []uint64, incr []uint64, ait Iterator, bit Iterator, iit Iterator) (err error) { 3050 var i, j, k int 3051 var validi, validj, validk bool 3052 for { 3053 if i, validi, err = ait.NextValidity(); err != nil { 3054 err = handleNoOp(err) 3055 break 3056 } 3057 if j, validj, err = bit.NextValidity(); err != nil { 3058 err = handleNoOp(err) 3059 break 3060 } 3061 if k, validk, err = iit.NextValidity(); err != nil { 3062 err = handleNoOp(err) 3063 break 3064 } 3065 if validi && validj && validk { 3066 incr[k] += a[i] + b[j] 3067 } 3068 } 3069 return 3070 } 3071 3072 func AddIterIncrF32(a []float32, b []float32, incr []float32, ait Iterator, bit Iterator, iit Iterator) (err error) { 3073 var i, j, k int 3074 var validi, validj, validk bool 3075 for { 3076 if i, validi, err = ait.NextValidity(); err != nil { 3077 err = handleNoOp(err) 3078 break 3079 } 3080 if j, validj, err = bit.NextValidity(); err != nil { 3081 err = handleNoOp(err) 3082 break 3083 } 3084 if k, validk, err = iit.NextValidity(); err != nil { 3085 err = handleNoOp(err) 3086 break 3087 } 3088 if validi && validj && validk { 3089 incr[k] += a[i] + b[j] 3090 } 3091 } 3092 return 3093 } 3094 3095 func AddIterIncrF64(a []float64, b []float64, incr []float64, ait Iterator, bit Iterator, iit Iterator) (err error) { 3096 var i, j, k int 3097 var validi, validj, validk bool 3098 for { 3099 if i, validi, err = ait.NextValidity(); err != nil { 3100 err = handleNoOp(err) 3101 break 3102 } 3103 if j, validj, err = bit.NextValidity(); err != nil { 3104 err = handleNoOp(err) 3105 break 3106 } 3107 if k, validk, err = iit.NextValidity(); err != nil { 3108 err = handleNoOp(err) 3109 break 3110 } 3111 if validi && validj && validk { 3112 incr[k] += a[i] + b[j] 3113 } 3114 } 3115 return 3116 } 3117 3118 func AddIterIncrC64(a []complex64, b []complex64, incr []complex64, ait Iterator, bit Iterator, iit Iterator) (err error) { 3119 var i, j, k int 3120 var validi, validj, validk bool 3121 for { 3122 if i, validi, err = ait.NextValidity(); err != nil { 3123 err = handleNoOp(err) 3124 break 3125 } 3126 if j, validj, err = bit.NextValidity(); err != nil { 3127 err = handleNoOp(err) 3128 break 3129 } 3130 if k, validk, err = iit.NextValidity(); err != nil { 3131 err = handleNoOp(err) 3132 break 3133 } 3134 if validi && validj && validk { 3135 incr[k] += a[i] + b[j] 3136 } 3137 } 3138 return 3139 } 3140 3141 func AddIterIncrC128(a []complex128, b []complex128, incr []complex128, ait Iterator, bit Iterator, iit Iterator) (err error) { 3142 var i, j, k int 3143 var validi, validj, validk bool 3144 for { 3145 if i, validi, err = ait.NextValidity(); err != nil { 3146 err = handleNoOp(err) 3147 break 3148 } 3149 if j, validj, err = bit.NextValidity(); err != nil { 3150 err = handleNoOp(err) 3151 break 3152 } 3153 if k, validk, err = iit.NextValidity(); err != nil { 3154 err = handleNoOp(err) 3155 break 3156 } 3157 if validi && validj && validk { 3158 incr[k] += a[i] + b[j] 3159 } 3160 } 3161 return 3162 } 3163 3164 func AddIterIncrStr(a []string, b []string, incr []string, ait Iterator, bit Iterator, iit Iterator) (err error) { 3165 var i, j, k int 3166 var validi, validj, validk bool 3167 for { 3168 if i, validi, err = ait.NextValidity(); err != nil { 3169 err = handleNoOp(err) 3170 break 3171 } 3172 if j, validj, err = bit.NextValidity(); err != nil { 3173 err = handleNoOp(err) 3174 break 3175 } 3176 if k, validk, err = iit.NextValidity(); err != nil { 3177 err = handleNoOp(err) 3178 break 3179 } 3180 if validi && validj && validk { 3181 incr[k] += a[i] + b[j] 3182 } 3183 } 3184 return 3185 } 3186 3187 func SubIterIncrI(a []int, b []int, incr []int, ait Iterator, bit Iterator, iit Iterator) (err error) { 3188 var i, j, k int 3189 var validi, validj, validk bool 3190 for { 3191 if i, validi, err = ait.NextValidity(); err != nil { 3192 err = handleNoOp(err) 3193 break 3194 } 3195 if j, validj, err = bit.NextValidity(); err != nil { 3196 err = handleNoOp(err) 3197 break 3198 } 3199 if k, validk, err = iit.NextValidity(); err != nil { 3200 err = handleNoOp(err) 3201 break 3202 } 3203 if validi && validj && validk { 3204 incr[k] += a[i] - b[j] 3205 } 3206 } 3207 return 3208 } 3209 3210 func SubIterIncrI8(a []int8, b []int8, incr []int8, ait Iterator, bit Iterator, iit Iterator) (err error) { 3211 var i, j, k int 3212 var validi, validj, validk bool 3213 for { 3214 if i, validi, err = ait.NextValidity(); err != nil { 3215 err = handleNoOp(err) 3216 break 3217 } 3218 if j, validj, err = bit.NextValidity(); err != nil { 3219 err = handleNoOp(err) 3220 break 3221 } 3222 if k, validk, err = iit.NextValidity(); err != nil { 3223 err = handleNoOp(err) 3224 break 3225 } 3226 if validi && validj && validk { 3227 incr[k] += a[i] - b[j] 3228 } 3229 } 3230 return 3231 } 3232 3233 func SubIterIncrI16(a []int16, b []int16, incr []int16, ait Iterator, bit Iterator, iit Iterator) (err error) { 3234 var i, j, k int 3235 var validi, validj, validk bool 3236 for { 3237 if i, validi, err = ait.NextValidity(); err != nil { 3238 err = handleNoOp(err) 3239 break 3240 } 3241 if j, validj, err = bit.NextValidity(); err != nil { 3242 err = handleNoOp(err) 3243 break 3244 } 3245 if k, validk, err = iit.NextValidity(); err != nil { 3246 err = handleNoOp(err) 3247 break 3248 } 3249 if validi && validj && validk { 3250 incr[k] += a[i] - b[j] 3251 } 3252 } 3253 return 3254 } 3255 3256 func SubIterIncrI32(a []int32, b []int32, incr []int32, ait Iterator, bit Iterator, iit Iterator) (err error) { 3257 var i, j, k int 3258 var validi, validj, validk bool 3259 for { 3260 if i, validi, err = ait.NextValidity(); err != nil { 3261 err = handleNoOp(err) 3262 break 3263 } 3264 if j, validj, err = bit.NextValidity(); err != nil { 3265 err = handleNoOp(err) 3266 break 3267 } 3268 if k, validk, err = iit.NextValidity(); err != nil { 3269 err = handleNoOp(err) 3270 break 3271 } 3272 if validi && validj && validk { 3273 incr[k] += a[i] - b[j] 3274 } 3275 } 3276 return 3277 } 3278 3279 func SubIterIncrI64(a []int64, b []int64, incr []int64, ait Iterator, bit Iterator, iit Iterator) (err error) { 3280 var i, j, k int 3281 var validi, validj, validk bool 3282 for { 3283 if i, validi, err = ait.NextValidity(); err != nil { 3284 err = handleNoOp(err) 3285 break 3286 } 3287 if j, validj, err = bit.NextValidity(); err != nil { 3288 err = handleNoOp(err) 3289 break 3290 } 3291 if k, validk, err = iit.NextValidity(); err != nil { 3292 err = handleNoOp(err) 3293 break 3294 } 3295 if validi && validj && validk { 3296 incr[k] += a[i] - b[j] 3297 } 3298 } 3299 return 3300 } 3301 3302 func SubIterIncrU(a []uint, b []uint, incr []uint, ait Iterator, bit Iterator, iit Iterator) (err error) { 3303 var i, j, k int 3304 var validi, validj, validk bool 3305 for { 3306 if i, validi, err = ait.NextValidity(); err != nil { 3307 err = handleNoOp(err) 3308 break 3309 } 3310 if j, validj, err = bit.NextValidity(); err != nil { 3311 err = handleNoOp(err) 3312 break 3313 } 3314 if k, validk, err = iit.NextValidity(); err != nil { 3315 err = handleNoOp(err) 3316 break 3317 } 3318 if validi && validj && validk { 3319 incr[k] += a[i] - b[j] 3320 } 3321 } 3322 return 3323 } 3324 3325 func SubIterIncrU8(a []uint8, b []uint8, incr []uint8, ait Iterator, bit Iterator, iit Iterator) (err error) { 3326 var i, j, k int 3327 var validi, validj, validk bool 3328 for { 3329 if i, validi, err = ait.NextValidity(); err != nil { 3330 err = handleNoOp(err) 3331 break 3332 } 3333 if j, validj, err = bit.NextValidity(); err != nil { 3334 err = handleNoOp(err) 3335 break 3336 } 3337 if k, validk, err = iit.NextValidity(); err != nil { 3338 err = handleNoOp(err) 3339 break 3340 } 3341 if validi && validj && validk { 3342 incr[k] += a[i] - b[j] 3343 } 3344 } 3345 return 3346 } 3347 3348 func SubIterIncrU16(a []uint16, b []uint16, incr []uint16, ait Iterator, bit Iterator, iit Iterator) (err error) { 3349 var i, j, k int 3350 var validi, validj, validk bool 3351 for { 3352 if i, validi, err = ait.NextValidity(); err != nil { 3353 err = handleNoOp(err) 3354 break 3355 } 3356 if j, validj, err = bit.NextValidity(); err != nil { 3357 err = handleNoOp(err) 3358 break 3359 } 3360 if k, validk, err = iit.NextValidity(); err != nil { 3361 err = handleNoOp(err) 3362 break 3363 } 3364 if validi && validj && validk { 3365 incr[k] += a[i] - b[j] 3366 } 3367 } 3368 return 3369 } 3370 3371 func SubIterIncrU32(a []uint32, b []uint32, incr []uint32, ait Iterator, bit Iterator, iit Iterator) (err error) { 3372 var i, j, k int 3373 var validi, validj, validk bool 3374 for { 3375 if i, validi, err = ait.NextValidity(); err != nil { 3376 err = handleNoOp(err) 3377 break 3378 } 3379 if j, validj, err = bit.NextValidity(); err != nil { 3380 err = handleNoOp(err) 3381 break 3382 } 3383 if k, validk, err = iit.NextValidity(); err != nil { 3384 err = handleNoOp(err) 3385 break 3386 } 3387 if validi && validj && validk { 3388 incr[k] += a[i] - b[j] 3389 } 3390 } 3391 return 3392 } 3393 3394 func SubIterIncrU64(a []uint64, b []uint64, incr []uint64, ait Iterator, bit Iterator, iit Iterator) (err error) { 3395 var i, j, k int 3396 var validi, validj, validk bool 3397 for { 3398 if i, validi, err = ait.NextValidity(); err != nil { 3399 err = handleNoOp(err) 3400 break 3401 } 3402 if j, validj, err = bit.NextValidity(); err != nil { 3403 err = handleNoOp(err) 3404 break 3405 } 3406 if k, validk, err = iit.NextValidity(); err != nil { 3407 err = handleNoOp(err) 3408 break 3409 } 3410 if validi && validj && validk { 3411 incr[k] += a[i] - b[j] 3412 } 3413 } 3414 return 3415 } 3416 3417 func SubIterIncrF32(a []float32, b []float32, incr []float32, ait Iterator, bit Iterator, iit Iterator) (err error) { 3418 var i, j, k int 3419 var validi, validj, validk bool 3420 for { 3421 if i, validi, err = ait.NextValidity(); err != nil { 3422 err = handleNoOp(err) 3423 break 3424 } 3425 if j, validj, err = bit.NextValidity(); err != nil { 3426 err = handleNoOp(err) 3427 break 3428 } 3429 if k, validk, err = iit.NextValidity(); err != nil { 3430 err = handleNoOp(err) 3431 break 3432 } 3433 if validi && validj && validk { 3434 incr[k] += a[i] - b[j] 3435 } 3436 } 3437 return 3438 } 3439 3440 func SubIterIncrF64(a []float64, b []float64, incr []float64, ait Iterator, bit Iterator, iit Iterator) (err error) { 3441 var i, j, k int 3442 var validi, validj, validk bool 3443 for { 3444 if i, validi, err = ait.NextValidity(); err != nil { 3445 err = handleNoOp(err) 3446 break 3447 } 3448 if j, validj, err = bit.NextValidity(); err != nil { 3449 err = handleNoOp(err) 3450 break 3451 } 3452 if k, validk, err = iit.NextValidity(); err != nil { 3453 err = handleNoOp(err) 3454 break 3455 } 3456 if validi && validj && validk { 3457 incr[k] += a[i] - b[j] 3458 } 3459 } 3460 return 3461 } 3462 3463 func SubIterIncrC64(a []complex64, b []complex64, incr []complex64, ait Iterator, bit Iterator, iit Iterator) (err error) { 3464 var i, j, k int 3465 var validi, validj, validk bool 3466 for { 3467 if i, validi, err = ait.NextValidity(); err != nil { 3468 err = handleNoOp(err) 3469 break 3470 } 3471 if j, validj, err = bit.NextValidity(); err != nil { 3472 err = handleNoOp(err) 3473 break 3474 } 3475 if k, validk, err = iit.NextValidity(); err != nil { 3476 err = handleNoOp(err) 3477 break 3478 } 3479 if validi && validj && validk { 3480 incr[k] += a[i] - b[j] 3481 } 3482 } 3483 return 3484 } 3485 3486 func SubIterIncrC128(a []complex128, b []complex128, incr []complex128, ait Iterator, bit Iterator, iit Iterator) (err error) { 3487 var i, j, k int 3488 var validi, validj, validk bool 3489 for { 3490 if i, validi, err = ait.NextValidity(); err != nil { 3491 err = handleNoOp(err) 3492 break 3493 } 3494 if j, validj, err = bit.NextValidity(); err != nil { 3495 err = handleNoOp(err) 3496 break 3497 } 3498 if k, validk, err = iit.NextValidity(); err != nil { 3499 err = handleNoOp(err) 3500 break 3501 } 3502 if validi && validj && validk { 3503 incr[k] += a[i] - b[j] 3504 } 3505 } 3506 return 3507 } 3508 3509 func MulIterIncrI(a []int, b []int, incr []int, ait Iterator, bit Iterator, iit Iterator) (err error) { 3510 var i, j, k int 3511 var validi, validj, validk bool 3512 for { 3513 if i, validi, err = ait.NextValidity(); err != nil { 3514 err = handleNoOp(err) 3515 break 3516 } 3517 if j, validj, err = bit.NextValidity(); err != nil { 3518 err = handleNoOp(err) 3519 break 3520 } 3521 if k, validk, err = iit.NextValidity(); err != nil { 3522 err = handleNoOp(err) 3523 break 3524 } 3525 if validi && validj && validk { 3526 incr[k] += a[i] * b[j] 3527 } 3528 } 3529 return 3530 } 3531 3532 func MulIterIncrI8(a []int8, b []int8, incr []int8, ait Iterator, bit Iterator, iit Iterator) (err error) { 3533 var i, j, k int 3534 var validi, validj, validk bool 3535 for { 3536 if i, validi, err = ait.NextValidity(); err != nil { 3537 err = handleNoOp(err) 3538 break 3539 } 3540 if j, validj, err = bit.NextValidity(); err != nil { 3541 err = handleNoOp(err) 3542 break 3543 } 3544 if k, validk, err = iit.NextValidity(); err != nil { 3545 err = handleNoOp(err) 3546 break 3547 } 3548 if validi && validj && validk { 3549 incr[k] += a[i] * b[j] 3550 } 3551 } 3552 return 3553 } 3554 3555 func MulIterIncrI16(a []int16, b []int16, incr []int16, ait Iterator, bit Iterator, iit Iterator) (err error) { 3556 var i, j, k int 3557 var validi, validj, validk bool 3558 for { 3559 if i, validi, err = ait.NextValidity(); err != nil { 3560 err = handleNoOp(err) 3561 break 3562 } 3563 if j, validj, err = bit.NextValidity(); err != nil { 3564 err = handleNoOp(err) 3565 break 3566 } 3567 if k, validk, err = iit.NextValidity(); err != nil { 3568 err = handleNoOp(err) 3569 break 3570 } 3571 if validi && validj && validk { 3572 incr[k] += a[i] * b[j] 3573 } 3574 } 3575 return 3576 } 3577 3578 func MulIterIncrI32(a []int32, b []int32, incr []int32, ait Iterator, bit Iterator, iit Iterator) (err error) { 3579 var i, j, k int 3580 var validi, validj, validk bool 3581 for { 3582 if i, validi, err = ait.NextValidity(); err != nil { 3583 err = handleNoOp(err) 3584 break 3585 } 3586 if j, validj, err = bit.NextValidity(); err != nil { 3587 err = handleNoOp(err) 3588 break 3589 } 3590 if k, validk, err = iit.NextValidity(); err != nil { 3591 err = handleNoOp(err) 3592 break 3593 } 3594 if validi && validj && validk { 3595 incr[k] += a[i] * b[j] 3596 } 3597 } 3598 return 3599 } 3600 3601 func MulIterIncrI64(a []int64, b []int64, incr []int64, ait Iterator, bit Iterator, iit Iterator) (err error) { 3602 var i, j, k int 3603 var validi, validj, validk bool 3604 for { 3605 if i, validi, err = ait.NextValidity(); err != nil { 3606 err = handleNoOp(err) 3607 break 3608 } 3609 if j, validj, err = bit.NextValidity(); err != nil { 3610 err = handleNoOp(err) 3611 break 3612 } 3613 if k, validk, err = iit.NextValidity(); err != nil { 3614 err = handleNoOp(err) 3615 break 3616 } 3617 if validi && validj && validk { 3618 incr[k] += a[i] * b[j] 3619 } 3620 } 3621 return 3622 } 3623 3624 func MulIterIncrU(a []uint, b []uint, incr []uint, ait Iterator, bit Iterator, iit Iterator) (err error) { 3625 var i, j, k int 3626 var validi, validj, validk bool 3627 for { 3628 if i, validi, err = ait.NextValidity(); err != nil { 3629 err = handleNoOp(err) 3630 break 3631 } 3632 if j, validj, err = bit.NextValidity(); err != nil { 3633 err = handleNoOp(err) 3634 break 3635 } 3636 if k, validk, err = iit.NextValidity(); err != nil { 3637 err = handleNoOp(err) 3638 break 3639 } 3640 if validi && validj && validk { 3641 incr[k] += a[i] * b[j] 3642 } 3643 } 3644 return 3645 } 3646 3647 func MulIterIncrU8(a []uint8, b []uint8, incr []uint8, ait Iterator, bit Iterator, iit Iterator) (err error) { 3648 var i, j, k int 3649 var validi, validj, validk bool 3650 for { 3651 if i, validi, err = ait.NextValidity(); err != nil { 3652 err = handleNoOp(err) 3653 break 3654 } 3655 if j, validj, err = bit.NextValidity(); err != nil { 3656 err = handleNoOp(err) 3657 break 3658 } 3659 if k, validk, err = iit.NextValidity(); err != nil { 3660 err = handleNoOp(err) 3661 break 3662 } 3663 if validi && validj && validk { 3664 incr[k] += a[i] * b[j] 3665 } 3666 } 3667 return 3668 } 3669 3670 func MulIterIncrU16(a []uint16, b []uint16, incr []uint16, ait Iterator, bit Iterator, iit Iterator) (err error) { 3671 var i, j, k int 3672 var validi, validj, validk bool 3673 for { 3674 if i, validi, err = ait.NextValidity(); err != nil { 3675 err = handleNoOp(err) 3676 break 3677 } 3678 if j, validj, err = bit.NextValidity(); err != nil { 3679 err = handleNoOp(err) 3680 break 3681 } 3682 if k, validk, err = iit.NextValidity(); err != nil { 3683 err = handleNoOp(err) 3684 break 3685 } 3686 if validi && validj && validk { 3687 incr[k] += a[i] * b[j] 3688 } 3689 } 3690 return 3691 } 3692 3693 func MulIterIncrU32(a []uint32, b []uint32, incr []uint32, ait Iterator, bit Iterator, iit Iterator) (err error) { 3694 var i, j, k int 3695 var validi, validj, validk bool 3696 for { 3697 if i, validi, err = ait.NextValidity(); err != nil { 3698 err = handleNoOp(err) 3699 break 3700 } 3701 if j, validj, err = bit.NextValidity(); err != nil { 3702 err = handleNoOp(err) 3703 break 3704 } 3705 if k, validk, err = iit.NextValidity(); err != nil { 3706 err = handleNoOp(err) 3707 break 3708 } 3709 if validi && validj && validk { 3710 incr[k] += a[i] * b[j] 3711 } 3712 } 3713 return 3714 } 3715 3716 func MulIterIncrU64(a []uint64, b []uint64, incr []uint64, ait Iterator, bit Iterator, iit Iterator) (err error) { 3717 var i, j, k int 3718 var validi, validj, validk bool 3719 for { 3720 if i, validi, err = ait.NextValidity(); err != nil { 3721 err = handleNoOp(err) 3722 break 3723 } 3724 if j, validj, err = bit.NextValidity(); err != nil { 3725 err = handleNoOp(err) 3726 break 3727 } 3728 if k, validk, err = iit.NextValidity(); err != nil { 3729 err = handleNoOp(err) 3730 break 3731 } 3732 if validi && validj && validk { 3733 incr[k] += a[i] * b[j] 3734 } 3735 } 3736 return 3737 } 3738 3739 func MulIterIncrF32(a []float32, b []float32, incr []float32, ait Iterator, bit Iterator, iit Iterator) (err error) { 3740 var i, j, k int 3741 var validi, validj, validk bool 3742 for { 3743 if i, validi, err = ait.NextValidity(); err != nil { 3744 err = handleNoOp(err) 3745 break 3746 } 3747 if j, validj, err = bit.NextValidity(); err != nil { 3748 err = handleNoOp(err) 3749 break 3750 } 3751 if k, validk, err = iit.NextValidity(); err != nil { 3752 err = handleNoOp(err) 3753 break 3754 } 3755 if validi && validj && validk { 3756 incr[k] += a[i] * b[j] 3757 } 3758 } 3759 return 3760 } 3761 3762 func MulIterIncrF64(a []float64, b []float64, incr []float64, ait Iterator, bit Iterator, iit Iterator) (err error) { 3763 var i, j, k int 3764 var validi, validj, validk bool 3765 for { 3766 if i, validi, err = ait.NextValidity(); err != nil { 3767 err = handleNoOp(err) 3768 break 3769 } 3770 if j, validj, err = bit.NextValidity(); err != nil { 3771 err = handleNoOp(err) 3772 break 3773 } 3774 if k, validk, err = iit.NextValidity(); err != nil { 3775 err = handleNoOp(err) 3776 break 3777 } 3778 if validi && validj && validk { 3779 incr[k] += a[i] * b[j] 3780 } 3781 } 3782 return 3783 } 3784 3785 func MulIterIncrC64(a []complex64, b []complex64, incr []complex64, ait Iterator, bit Iterator, iit Iterator) (err error) { 3786 var i, j, k int 3787 var validi, validj, validk bool 3788 for { 3789 if i, validi, err = ait.NextValidity(); err != nil { 3790 err = handleNoOp(err) 3791 break 3792 } 3793 if j, validj, err = bit.NextValidity(); err != nil { 3794 err = handleNoOp(err) 3795 break 3796 } 3797 if k, validk, err = iit.NextValidity(); err != nil { 3798 err = handleNoOp(err) 3799 break 3800 } 3801 if validi && validj && validk { 3802 incr[k] += a[i] * b[j] 3803 } 3804 } 3805 return 3806 } 3807 3808 func MulIterIncrC128(a []complex128, b []complex128, incr []complex128, ait Iterator, bit Iterator, iit Iterator) (err error) { 3809 var i, j, k int 3810 var validi, validj, validk bool 3811 for { 3812 if i, validi, err = ait.NextValidity(); err != nil { 3813 err = handleNoOp(err) 3814 break 3815 } 3816 if j, validj, err = bit.NextValidity(); err != nil { 3817 err = handleNoOp(err) 3818 break 3819 } 3820 if k, validk, err = iit.NextValidity(); err != nil { 3821 err = handleNoOp(err) 3822 break 3823 } 3824 if validi && validj && validk { 3825 incr[k] += a[i] * b[j] 3826 } 3827 } 3828 return 3829 } 3830 3831 func DivIterIncrI(a []int, b []int, incr []int, ait Iterator, bit Iterator, iit Iterator) (err error) { 3832 var errs errorIndices 3833 var i, j, k int 3834 var validi, validj, validk bool 3835 for { 3836 if i, validi, err = ait.NextValidity(); err != nil { 3837 err = handleNoOp(err) 3838 break 3839 } 3840 if j, validj, err = bit.NextValidity(); err != nil { 3841 err = handleNoOp(err) 3842 break 3843 } 3844 if k, validk, err = iit.NextValidity(); err != nil { 3845 err = handleNoOp(err) 3846 break 3847 } 3848 if validi && validj && validk { 3849 if b[j] == 0 { 3850 errs = append(errs, i) 3851 incr[i] = 0 3852 continue 3853 } 3854 incr[k] += a[i] / b[j] 3855 } 3856 } 3857 if err != nil { 3858 return 3859 } 3860 if len(errs) > 0 { 3861 return errs 3862 } 3863 return nil 3864 } 3865 3866 func DivIterIncrI8(a []int8, b []int8, incr []int8, ait Iterator, bit Iterator, iit Iterator) (err error) { 3867 var errs errorIndices 3868 var i, j, k int 3869 var validi, validj, validk bool 3870 for { 3871 if i, validi, err = ait.NextValidity(); err != nil { 3872 err = handleNoOp(err) 3873 break 3874 } 3875 if j, validj, err = bit.NextValidity(); err != nil { 3876 err = handleNoOp(err) 3877 break 3878 } 3879 if k, validk, err = iit.NextValidity(); err != nil { 3880 err = handleNoOp(err) 3881 break 3882 } 3883 if validi && validj && validk { 3884 if b[j] == 0 { 3885 errs = append(errs, i) 3886 incr[i] = 0 3887 continue 3888 } 3889 incr[k] += a[i] / b[j] 3890 } 3891 } 3892 if err != nil { 3893 return 3894 } 3895 if len(errs) > 0 { 3896 return errs 3897 } 3898 return nil 3899 } 3900 3901 func DivIterIncrI16(a []int16, b []int16, incr []int16, ait Iterator, bit Iterator, iit Iterator) (err error) { 3902 var errs errorIndices 3903 var i, j, k int 3904 var validi, validj, validk bool 3905 for { 3906 if i, validi, err = ait.NextValidity(); err != nil { 3907 err = handleNoOp(err) 3908 break 3909 } 3910 if j, validj, err = bit.NextValidity(); err != nil { 3911 err = handleNoOp(err) 3912 break 3913 } 3914 if k, validk, err = iit.NextValidity(); err != nil { 3915 err = handleNoOp(err) 3916 break 3917 } 3918 if validi && validj && validk { 3919 if b[j] == 0 { 3920 errs = append(errs, i) 3921 incr[i] = 0 3922 continue 3923 } 3924 incr[k] += a[i] / b[j] 3925 } 3926 } 3927 if err != nil { 3928 return 3929 } 3930 if len(errs) > 0 { 3931 return errs 3932 } 3933 return nil 3934 } 3935 3936 func DivIterIncrI32(a []int32, b []int32, incr []int32, ait Iterator, bit Iterator, iit Iterator) (err error) { 3937 var errs errorIndices 3938 var i, j, k int 3939 var validi, validj, validk bool 3940 for { 3941 if i, validi, err = ait.NextValidity(); err != nil { 3942 err = handleNoOp(err) 3943 break 3944 } 3945 if j, validj, err = bit.NextValidity(); err != nil { 3946 err = handleNoOp(err) 3947 break 3948 } 3949 if k, validk, err = iit.NextValidity(); err != nil { 3950 err = handleNoOp(err) 3951 break 3952 } 3953 if validi && validj && validk { 3954 if b[j] == 0 { 3955 errs = append(errs, i) 3956 incr[i] = 0 3957 continue 3958 } 3959 incr[k] += a[i] / b[j] 3960 } 3961 } 3962 if err != nil { 3963 return 3964 } 3965 if len(errs) > 0 { 3966 return errs 3967 } 3968 return nil 3969 } 3970 3971 func DivIterIncrI64(a []int64, b []int64, incr []int64, ait Iterator, bit Iterator, iit Iterator) (err error) { 3972 var errs errorIndices 3973 var i, j, k int 3974 var validi, validj, validk bool 3975 for { 3976 if i, validi, err = ait.NextValidity(); err != nil { 3977 err = handleNoOp(err) 3978 break 3979 } 3980 if j, validj, err = bit.NextValidity(); err != nil { 3981 err = handleNoOp(err) 3982 break 3983 } 3984 if k, validk, err = iit.NextValidity(); err != nil { 3985 err = handleNoOp(err) 3986 break 3987 } 3988 if validi && validj && validk { 3989 if b[j] == 0 { 3990 errs = append(errs, i) 3991 incr[i] = 0 3992 continue 3993 } 3994 incr[k] += a[i] / b[j] 3995 } 3996 } 3997 if err != nil { 3998 return 3999 } 4000 if len(errs) > 0 { 4001 return errs 4002 } 4003 return nil 4004 } 4005 4006 func DivIterIncrU(a []uint, b []uint, incr []uint, ait Iterator, bit Iterator, iit Iterator) (err error) { 4007 var errs errorIndices 4008 var i, j, k int 4009 var validi, validj, validk bool 4010 for { 4011 if i, validi, err = ait.NextValidity(); err != nil { 4012 err = handleNoOp(err) 4013 break 4014 } 4015 if j, validj, err = bit.NextValidity(); err != nil { 4016 err = handleNoOp(err) 4017 break 4018 } 4019 if k, validk, err = iit.NextValidity(); err != nil { 4020 err = handleNoOp(err) 4021 break 4022 } 4023 if validi && validj && validk { 4024 if b[j] == 0 { 4025 errs = append(errs, i) 4026 incr[i] = 0 4027 continue 4028 } 4029 incr[k] += a[i] / b[j] 4030 } 4031 } 4032 if err != nil { 4033 return 4034 } 4035 if len(errs) > 0 { 4036 return errs 4037 } 4038 return nil 4039 } 4040 4041 func DivIterIncrU8(a []uint8, b []uint8, incr []uint8, ait Iterator, bit Iterator, iit Iterator) (err error) { 4042 var errs errorIndices 4043 var i, j, k int 4044 var validi, validj, validk bool 4045 for { 4046 if i, validi, err = ait.NextValidity(); err != nil { 4047 err = handleNoOp(err) 4048 break 4049 } 4050 if j, validj, err = bit.NextValidity(); err != nil { 4051 err = handleNoOp(err) 4052 break 4053 } 4054 if k, validk, err = iit.NextValidity(); err != nil { 4055 err = handleNoOp(err) 4056 break 4057 } 4058 if validi && validj && validk { 4059 if b[j] == 0 { 4060 errs = append(errs, i) 4061 incr[i] = 0 4062 continue 4063 } 4064 incr[k] += a[i] / b[j] 4065 } 4066 } 4067 if err != nil { 4068 return 4069 } 4070 if len(errs) > 0 { 4071 return errs 4072 } 4073 return nil 4074 } 4075 4076 func DivIterIncrU16(a []uint16, b []uint16, incr []uint16, ait Iterator, bit Iterator, iit Iterator) (err error) { 4077 var errs errorIndices 4078 var i, j, k int 4079 var validi, validj, validk bool 4080 for { 4081 if i, validi, err = ait.NextValidity(); err != nil { 4082 err = handleNoOp(err) 4083 break 4084 } 4085 if j, validj, err = bit.NextValidity(); err != nil { 4086 err = handleNoOp(err) 4087 break 4088 } 4089 if k, validk, err = iit.NextValidity(); err != nil { 4090 err = handleNoOp(err) 4091 break 4092 } 4093 if validi && validj && validk { 4094 if b[j] == 0 { 4095 errs = append(errs, i) 4096 incr[i] = 0 4097 continue 4098 } 4099 incr[k] += a[i] / b[j] 4100 } 4101 } 4102 if err != nil { 4103 return 4104 } 4105 if len(errs) > 0 { 4106 return errs 4107 } 4108 return nil 4109 } 4110 4111 func DivIterIncrU32(a []uint32, b []uint32, incr []uint32, ait Iterator, bit Iterator, iit Iterator) (err error) { 4112 var errs errorIndices 4113 var i, j, k int 4114 var validi, validj, validk bool 4115 for { 4116 if i, validi, err = ait.NextValidity(); err != nil { 4117 err = handleNoOp(err) 4118 break 4119 } 4120 if j, validj, err = bit.NextValidity(); err != nil { 4121 err = handleNoOp(err) 4122 break 4123 } 4124 if k, validk, err = iit.NextValidity(); err != nil { 4125 err = handleNoOp(err) 4126 break 4127 } 4128 if validi && validj && validk { 4129 if b[j] == 0 { 4130 errs = append(errs, i) 4131 incr[i] = 0 4132 continue 4133 } 4134 incr[k] += a[i] / b[j] 4135 } 4136 } 4137 if err != nil { 4138 return 4139 } 4140 if len(errs) > 0 { 4141 return errs 4142 } 4143 return nil 4144 } 4145 4146 func DivIterIncrU64(a []uint64, b []uint64, incr []uint64, ait Iterator, bit Iterator, iit Iterator) (err error) { 4147 var errs errorIndices 4148 var i, j, k int 4149 var validi, validj, validk bool 4150 for { 4151 if i, validi, err = ait.NextValidity(); err != nil { 4152 err = handleNoOp(err) 4153 break 4154 } 4155 if j, validj, err = bit.NextValidity(); err != nil { 4156 err = handleNoOp(err) 4157 break 4158 } 4159 if k, validk, err = iit.NextValidity(); err != nil { 4160 err = handleNoOp(err) 4161 break 4162 } 4163 if validi && validj && validk { 4164 if b[j] == 0 { 4165 errs = append(errs, i) 4166 incr[i] = 0 4167 continue 4168 } 4169 incr[k] += a[i] / b[j] 4170 } 4171 } 4172 if err != nil { 4173 return 4174 } 4175 if len(errs) > 0 { 4176 return errs 4177 } 4178 return nil 4179 } 4180 4181 func DivIterIncrF32(a []float32, b []float32, incr []float32, ait Iterator, bit Iterator, iit Iterator) (err error) { 4182 var i, j, k int 4183 var validi, validj, validk bool 4184 for { 4185 if i, validi, err = ait.NextValidity(); err != nil { 4186 err = handleNoOp(err) 4187 break 4188 } 4189 if j, validj, err = bit.NextValidity(); err != nil { 4190 err = handleNoOp(err) 4191 break 4192 } 4193 if k, validk, err = iit.NextValidity(); err != nil { 4194 err = handleNoOp(err) 4195 break 4196 } 4197 if validi && validj && validk { 4198 incr[k] += a[i] / b[j] 4199 } 4200 } 4201 return 4202 } 4203 4204 func DivIterIncrF64(a []float64, b []float64, incr []float64, ait Iterator, bit Iterator, iit Iterator) (err error) { 4205 var i, j, k int 4206 var validi, validj, validk bool 4207 for { 4208 if i, validi, err = ait.NextValidity(); err != nil { 4209 err = handleNoOp(err) 4210 break 4211 } 4212 if j, validj, err = bit.NextValidity(); err != nil { 4213 err = handleNoOp(err) 4214 break 4215 } 4216 if k, validk, err = iit.NextValidity(); err != nil { 4217 err = handleNoOp(err) 4218 break 4219 } 4220 if validi && validj && validk { 4221 incr[k] += a[i] / b[j] 4222 } 4223 } 4224 return 4225 } 4226 4227 func DivIterIncrC64(a []complex64, b []complex64, incr []complex64, ait Iterator, bit Iterator, iit Iterator) (err error) { 4228 var i, j, k int 4229 var validi, validj, validk bool 4230 for { 4231 if i, validi, err = ait.NextValidity(); err != nil { 4232 err = handleNoOp(err) 4233 break 4234 } 4235 if j, validj, err = bit.NextValidity(); err != nil { 4236 err = handleNoOp(err) 4237 break 4238 } 4239 if k, validk, err = iit.NextValidity(); err != nil { 4240 err = handleNoOp(err) 4241 break 4242 } 4243 if validi && validj && validk { 4244 incr[k] += a[i] / b[j] 4245 } 4246 } 4247 return 4248 } 4249 4250 func DivIterIncrC128(a []complex128, b []complex128, incr []complex128, ait Iterator, bit Iterator, iit Iterator) (err error) { 4251 var i, j, k int 4252 var validi, validj, validk bool 4253 for { 4254 if i, validi, err = ait.NextValidity(); err != nil { 4255 err = handleNoOp(err) 4256 break 4257 } 4258 if j, validj, err = bit.NextValidity(); err != nil { 4259 err = handleNoOp(err) 4260 break 4261 } 4262 if k, validk, err = iit.NextValidity(); err != nil { 4263 err = handleNoOp(err) 4264 break 4265 } 4266 if validi && validj && validk { 4267 incr[k] += a[i] / b[j] 4268 } 4269 } 4270 return 4271 } 4272 4273 func PowIterIncrF32(a []float32, b []float32, incr []float32, ait Iterator, bit Iterator, iit Iterator) (err error) { 4274 var i, j, k int 4275 var validi, validj, validk bool 4276 for { 4277 if i, validi, err = ait.NextValidity(); err != nil { 4278 err = handleNoOp(err) 4279 break 4280 } 4281 if j, validj, err = bit.NextValidity(); err != nil { 4282 err = handleNoOp(err) 4283 break 4284 } 4285 if k, validk, err = iit.NextValidity(); err != nil { 4286 err = handleNoOp(err) 4287 break 4288 } 4289 if validi && validj && validk { 4290 incr[k] += math32.Pow(a[i], b[j]) 4291 } 4292 } 4293 return 4294 } 4295 4296 func PowIterIncrF64(a []float64, b []float64, incr []float64, ait Iterator, bit Iterator, iit Iterator) (err error) { 4297 var i, j, k int 4298 var validi, validj, validk bool 4299 for { 4300 if i, validi, err = ait.NextValidity(); err != nil { 4301 err = handleNoOp(err) 4302 break 4303 } 4304 if j, validj, err = bit.NextValidity(); err != nil { 4305 err = handleNoOp(err) 4306 break 4307 } 4308 if k, validk, err = iit.NextValidity(); err != nil { 4309 err = handleNoOp(err) 4310 break 4311 } 4312 if validi && validj && validk { 4313 incr[k] += math.Pow(a[i], b[j]) 4314 } 4315 } 4316 return 4317 } 4318 4319 func PowIterIncrC64(a []complex64, b []complex64, incr []complex64, ait Iterator, bit Iterator, iit Iterator) (err error) { 4320 var i, j, k int 4321 var validi, validj, validk bool 4322 for { 4323 if i, validi, err = ait.NextValidity(); err != nil { 4324 err = handleNoOp(err) 4325 break 4326 } 4327 if j, validj, err = bit.NextValidity(); err != nil { 4328 err = handleNoOp(err) 4329 break 4330 } 4331 if k, validk, err = iit.NextValidity(); err != nil { 4332 err = handleNoOp(err) 4333 break 4334 } 4335 if validi && validj && validk { 4336 incr[k] += complex64(cmplx.Pow(complex128(a[i]), complex128(b[j]))) 4337 } 4338 } 4339 return 4340 } 4341 4342 func PowIterIncrC128(a []complex128, b []complex128, incr []complex128, ait Iterator, bit Iterator, iit Iterator) (err error) { 4343 var i, j, k int 4344 var validi, validj, validk bool 4345 for { 4346 if i, validi, err = ait.NextValidity(); err != nil { 4347 err = handleNoOp(err) 4348 break 4349 } 4350 if j, validj, err = bit.NextValidity(); err != nil { 4351 err = handleNoOp(err) 4352 break 4353 } 4354 if k, validk, err = iit.NextValidity(); err != nil { 4355 err = handleNoOp(err) 4356 break 4357 } 4358 if validi && validj && validk { 4359 incr[k] += cmplx.Pow(a[i], b[j]) 4360 } 4361 } 4362 return 4363 } 4364 4365 func ModIterIncrI(a []int, b []int, incr []int, ait Iterator, bit Iterator, iit Iterator) (err error) { 4366 var i, j, k int 4367 var validi, validj, validk bool 4368 for { 4369 if i, validi, err = ait.NextValidity(); err != nil { 4370 err = handleNoOp(err) 4371 break 4372 } 4373 if j, validj, err = bit.NextValidity(); err != nil { 4374 err = handleNoOp(err) 4375 break 4376 } 4377 if k, validk, err = iit.NextValidity(); err != nil { 4378 err = handleNoOp(err) 4379 break 4380 } 4381 if validi && validj && validk { 4382 incr[k] += a[i] % b[j] 4383 } 4384 } 4385 return 4386 } 4387 4388 func ModIterIncrI8(a []int8, b []int8, incr []int8, ait Iterator, bit Iterator, iit Iterator) (err error) { 4389 var i, j, k int 4390 var validi, validj, validk bool 4391 for { 4392 if i, validi, err = ait.NextValidity(); err != nil { 4393 err = handleNoOp(err) 4394 break 4395 } 4396 if j, validj, err = bit.NextValidity(); err != nil { 4397 err = handleNoOp(err) 4398 break 4399 } 4400 if k, validk, err = iit.NextValidity(); err != nil { 4401 err = handleNoOp(err) 4402 break 4403 } 4404 if validi && validj && validk { 4405 incr[k] += a[i] % b[j] 4406 } 4407 } 4408 return 4409 } 4410 4411 func ModIterIncrI16(a []int16, b []int16, incr []int16, ait Iterator, bit Iterator, iit Iterator) (err error) { 4412 var i, j, k int 4413 var validi, validj, validk bool 4414 for { 4415 if i, validi, err = ait.NextValidity(); err != nil { 4416 err = handleNoOp(err) 4417 break 4418 } 4419 if j, validj, err = bit.NextValidity(); err != nil { 4420 err = handleNoOp(err) 4421 break 4422 } 4423 if k, validk, err = iit.NextValidity(); err != nil { 4424 err = handleNoOp(err) 4425 break 4426 } 4427 if validi && validj && validk { 4428 incr[k] += a[i] % b[j] 4429 } 4430 } 4431 return 4432 } 4433 4434 func ModIterIncrI32(a []int32, b []int32, incr []int32, ait Iterator, bit Iterator, iit Iterator) (err error) { 4435 var i, j, k int 4436 var validi, validj, validk bool 4437 for { 4438 if i, validi, err = ait.NextValidity(); err != nil { 4439 err = handleNoOp(err) 4440 break 4441 } 4442 if j, validj, err = bit.NextValidity(); err != nil { 4443 err = handleNoOp(err) 4444 break 4445 } 4446 if k, validk, err = iit.NextValidity(); err != nil { 4447 err = handleNoOp(err) 4448 break 4449 } 4450 if validi && validj && validk { 4451 incr[k] += a[i] % b[j] 4452 } 4453 } 4454 return 4455 } 4456 4457 func ModIterIncrI64(a []int64, b []int64, incr []int64, ait Iterator, bit Iterator, iit Iterator) (err error) { 4458 var i, j, k int 4459 var validi, validj, validk bool 4460 for { 4461 if i, validi, err = ait.NextValidity(); err != nil { 4462 err = handleNoOp(err) 4463 break 4464 } 4465 if j, validj, err = bit.NextValidity(); err != nil { 4466 err = handleNoOp(err) 4467 break 4468 } 4469 if k, validk, err = iit.NextValidity(); err != nil { 4470 err = handleNoOp(err) 4471 break 4472 } 4473 if validi && validj && validk { 4474 incr[k] += a[i] % b[j] 4475 } 4476 } 4477 return 4478 } 4479 4480 func ModIterIncrU(a []uint, b []uint, incr []uint, ait Iterator, bit Iterator, iit Iterator) (err error) { 4481 var i, j, k int 4482 var validi, validj, validk bool 4483 for { 4484 if i, validi, err = ait.NextValidity(); err != nil { 4485 err = handleNoOp(err) 4486 break 4487 } 4488 if j, validj, err = bit.NextValidity(); err != nil { 4489 err = handleNoOp(err) 4490 break 4491 } 4492 if k, validk, err = iit.NextValidity(); err != nil { 4493 err = handleNoOp(err) 4494 break 4495 } 4496 if validi && validj && validk { 4497 incr[k] += a[i] % b[j] 4498 } 4499 } 4500 return 4501 } 4502 4503 func ModIterIncrU8(a []uint8, b []uint8, incr []uint8, ait Iterator, bit Iterator, iit Iterator) (err error) { 4504 var i, j, k int 4505 var validi, validj, validk bool 4506 for { 4507 if i, validi, err = ait.NextValidity(); err != nil { 4508 err = handleNoOp(err) 4509 break 4510 } 4511 if j, validj, err = bit.NextValidity(); err != nil { 4512 err = handleNoOp(err) 4513 break 4514 } 4515 if k, validk, err = iit.NextValidity(); err != nil { 4516 err = handleNoOp(err) 4517 break 4518 } 4519 if validi && validj && validk { 4520 incr[k] += a[i] % b[j] 4521 } 4522 } 4523 return 4524 } 4525 4526 func ModIterIncrU16(a []uint16, b []uint16, incr []uint16, ait Iterator, bit Iterator, iit Iterator) (err error) { 4527 var i, j, k int 4528 var validi, validj, validk bool 4529 for { 4530 if i, validi, err = ait.NextValidity(); err != nil { 4531 err = handleNoOp(err) 4532 break 4533 } 4534 if j, validj, err = bit.NextValidity(); err != nil { 4535 err = handleNoOp(err) 4536 break 4537 } 4538 if k, validk, err = iit.NextValidity(); err != nil { 4539 err = handleNoOp(err) 4540 break 4541 } 4542 if validi && validj && validk { 4543 incr[k] += a[i] % b[j] 4544 } 4545 } 4546 return 4547 } 4548 4549 func ModIterIncrU32(a []uint32, b []uint32, incr []uint32, ait Iterator, bit Iterator, iit Iterator) (err error) { 4550 var i, j, k int 4551 var validi, validj, validk bool 4552 for { 4553 if i, validi, err = ait.NextValidity(); err != nil { 4554 err = handleNoOp(err) 4555 break 4556 } 4557 if j, validj, err = bit.NextValidity(); err != nil { 4558 err = handleNoOp(err) 4559 break 4560 } 4561 if k, validk, err = iit.NextValidity(); err != nil { 4562 err = handleNoOp(err) 4563 break 4564 } 4565 if validi && validj && validk { 4566 incr[k] += a[i] % b[j] 4567 } 4568 } 4569 return 4570 } 4571 4572 func ModIterIncrU64(a []uint64, b []uint64, incr []uint64, ait Iterator, bit Iterator, iit Iterator) (err error) { 4573 var i, j, k int 4574 var validi, validj, validk bool 4575 for { 4576 if i, validi, err = ait.NextValidity(); err != nil { 4577 err = handleNoOp(err) 4578 break 4579 } 4580 if j, validj, err = bit.NextValidity(); err != nil { 4581 err = handleNoOp(err) 4582 break 4583 } 4584 if k, validk, err = iit.NextValidity(); err != nil { 4585 err = handleNoOp(err) 4586 break 4587 } 4588 if validi && validj && validk { 4589 incr[k] += a[i] % b[j] 4590 } 4591 } 4592 return 4593 } 4594 4595 func ModIterIncrF32(a []float32, b []float32, incr []float32, ait Iterator, bit Iterator, iit Iterator) (err error) { 4596 var i, j, k int 4597 var validi, validj, validk bool 4598 for { 4599 if i, validi, err = ait.NextValidity(); err != nil { 4600 err = handleNoOp(err) 4601 break 4602 } 4603 if j, validj, err = bit.NextValidity(); err != nil { 4604 err = handleNoOp(err) 4605 break 4606 } 4607 if k, validk, err = iit.NextValidity(); err != nil { 4608 err = handleNoOp(err) 4609 break 4610 } 4611 if validi && validj && validk { 4612 incr[k] += math32.Mod(a[i], b[j]) 4613 } 4614 } 4615 return 4616 } 4617 4618 func ModIterIncrF64(a []float64, b []float64, incr []float64, ait Iterator, bit Iterator, iit Iterator) (err error) { 4619 var i, j, k int 4620 var validi, validj, validk bool 4621 for { 4622 if i, validi, err = ait.NextValidity(); err != nil { 4623 err = handleNoOp(err) 4624 break 4625 } 4626 if j, validj, err = bit.NextValidity(); err != nil { 4627 err = handleNoOp(err) 4628 break 4629 } 4630 if k, validk, err = iit.NextValidity(); err != nil { 4631 err = handleNoOp(err) 4632 break 4633 } 4634 if validi && validj && validk { 4635 incr[k] += math.Mod(a[i], b[j]) 4636 } 4637 } 4638 return 4639 } 4640 4641 func AddRecvI(a []int, b []int, recv []int) { 4642 a = a[:len(recv)] 4643 b = b[:len(recv)] 4644 for i := range recv { 4645 recv[i] = a[i] + b[i] 4646 } 4647 } 4648 4649 func AddRecvI8(a []int8, b []int8, recv []int8) { 4650 a = a[:len(recv)] 4651 b = b[:len(recv)] 4652 for i := range recv { 4653 recv[i] = a[i] + b[i] 4654 } 4655 } 4656 4657 func AddRecvI16(a []int16, b []int16, recv []int16) { 4658 a = a[:len(recv)] 4659 b = b[:len(recv)] 4660 for i := range recv { 4661 recv[i] = a[i] + b[i] 4662 } 4663 } 4664 4665 func AddRecvI32(a []int32, b []int32, recv []int32) { 4666 a = a[:len(recv)] 4667 b = b[:len(recv)] 4668 for i := range recv { 4669 recv[i] = a[i] + b[i] 4670 } 4671 } 4672 4673 func AddRecvI64(a []int64, b []int64, recv []int64) { 4674 a = a[:len(recv)] 4675 b = b[:len(recv)] 4676 for i := range recv { 4677 recv[i] = a[i] + b[i] 4678 } 4679 } 4680 4681 func AddRecvU(a []uint, b []uint, recv []uint) { 4682 a = a[:len(recv)] 4683 b = b[:len(recv)] 4684 for i := range recv { 4685 recv[i] = a[i] + b[i] 4686 } 4687 } 4688 4689 func AddRecvU8(a []uint8, b []uint8, recv []uint8) { 4690 a = a[:len(recv)] 4691 b = b[:len(recv)] 4692 for i := range recv { 4693 recv[i] = a[i] + b[i] 4694 } 4695 } 4696 4697 func AddRecvU16(a []uint16, b []uint16, recv []uint16) { 4698 a = a[:len(recv)] 4699 b = b[:len(recv)] 4700 for i := range recv { 4701 recv[i] = a[i] + b[i] 4702 } 4703 } 4704 4705 func AddRecvU32(a []uint32, b []uint32, recv []uint32) { 4706 a = a[:len(recv)] 4707 b = b[:len(recv)] 4708 for i := range recv { 4709 recv[i] = a[i] + b[i] 4710 } 4711 } 4712 4713 func AddRecvU64(a []uint64, b []uint64, recv []uint64) { 4714 a = a[:len(recv)] 4715 b = b[:len(recv)] 4716 for i := range recv { 4717 recv[i] = a[i] + b[i] 4718 } 4719 } 4720 4721 func AddRecvF32(a []float32, b []float32, recv []float32) { 4722 a = a[:len(recv)] 4723 b = b[:len(recv)] 4724 for i := range recv { 4725 recv[i] = a[i] + b[i] 4726 } 4727 } 4728 4729 func AddRecvF64(a []float64, b []float64, recv []float64) { 4730 a = a[:len(recv)] 4731 b = b[:len(recv)] 4732 for i := range recv { 4733 recv[i] = a[i] + b[i] 4734 } 4735 } 4736 4737 func AddRecvC64(a []complex64, b []complex64, recv []complex64) { 4738 a = a[:len(recv)] 4739 b = b[:len(recv)] 4740 for i := range recv { 4741 recv[i] = a[i] + b[i] 4742 } 4743 } 4744 4745 func AddRecvC128(a []complex128, b []complex128, recv []complex128) { 4746 a = a[:len(recv)] 4747 b = b[:len(recv)] 4748 for i := range recv { 4749 recv[i] = a[i] + b[i] 4750 } 4751 } 4752 4753 func AddRecvStr(a []string, b []string, recv []string) { 4754 a = a[:len(recv)] 4755 b = b[:len(recv)] 4756 for i := range recv { 4757 recv[i] = a[i] + b[i] 4758 } 4759 } 4760 4761 func SubRecvI(a []int, b []int, recv []int) { 4762 a = a[:len(recv)] 4763 b = b[:len(recv)] 4764 for i := range recv { 4765 recv[i] = a[i] - b[i] 4766 } 4767 } 4768 4769 func SubRecvI8(a []int8, b []int8, recv []int8) { 4770 a = a[:len(recv)] 4771 b = b[:len(recv)] 4772 for i := range recv { 4773 recv[i] = a[i] - b[i] 4774 } 4775 } 4776 4777 func SubRecvI16(a []int16, b []int16, recv []int16) { 4778 a = a[:len(recv)] 4779 b = b[:len(recv)] 4780 for i := range recv { 4781 recv[i] = a[i] - b[i] 4782 } 4783 } 4784 4785 func SubRecvI32(a []int32, b []int32, recv []int32) { 4786 a = a[:len(recv)] 4787 b = b[:len(recv)] 4788 for i := range recv { 4789 recv[i] = a[i] - b[i] 4790 } 4791 } 4792 4793 func SubRecvI64(a []int64, b []int64, recv []int64) { 4794 a = a[:len(recv)] 4795 b = b[:len(recv)] 4796 for i := range recv { 4797 recv[i] = a[i] - b[i] 4798 } 4799 } 4800 4801 func SubRecvU(a []uint, b []uint, recv []uint) { 4802 a = a[:len(recv)] 4803 b = b[:len(recv)] 4804 for i := range recv { 4805 recv[i] = a[i] - b[i] 4806 } 4807 } 4808 4809 func SubRecvU8(a []uint8, b []uint8, recv []uint8) { 4810 a = a[:len(recv)] 4811 b = b[:len(recv)] 4812 for i := range recv { 4813 recv[i] = a[i] - b[i] 4814 } 4815 } 4816 4817 func SubRecvU16(a []uint16, b []uint16, recv []uint16) { 4818 a = a[:len(recv)] 4819 b = b[:len(recv)] 4820 for i := range recv { 4821 recv[i] = a[i] - b[i] 4822 } 4823 } 4824 4825 func SubRecvU32(a []uint32, b []uint32, recv []uint32) { 4826 a = a[:len(recv)] 4827 b = b[:len(recv)] 4828 for i := range recv { 4829 recv[i] = a[i] - b[i] 4830 } 4831 } 4832 4833 func SubRecvU64(a []uint64, b []uint64, recv []uint64) { 4834 a = a[:len(recv)] 4835 b = b[:len(recv)] 4836 for i := range recv { 4837 recv[i] = a[i] - b[i] 4838 } 4839 } 4840 4841 func SubRecvF32(a []float32, b []float32, recv []float32) { 4842 a = a[:len(recv)] 4843 b = b[:len(recv)] 4844 for i := range recv { 4845 recv[i] = a[i] - b[i] 4846 } 4847 } 4848 4849 func SubRecvF64(a []float64, b []float64, recv []float64) { 4850 a = a[:len(recv)] 4851 b = b[:len(recv)] 4852 for i := range recv { 4853 recv[i] = a[i] - b[i] 4854 } 4855 } 4856 4857 func SubRecvC64(a []complex64, b []complex64, recv []complex64) { 4858 a = a[:len(recv)] 4859 b = b[:len(recv)] 4860 for i := range recv { 4861 recv[i] = a[i] - b[i] 4862 } 4863 } 4864 4865 func SubRecvC128(a []complex128, b []complex128, recv []complex128) { 4866 a = a[:len(recv)] 4867 b = b[:len(recv)] 4868 for i := range recv { 4869 recv[i] = a[i] - b[i] 4870 } 4871 } 4872 4873 func MulRecvI(a []int, b []int, recv []int) { 4874 a = a[:len(recv)] 4875 b = b[:len(recv)] 4876 for i := range recv { 4877 recv[i] = a[i] * b[i] 4878 } 4879 } 4880 4881 func MulRecvI8(a []int8, b []int8, recv []int8) { 4882 a = a[:len(recv)] 4883 b = b[:len(recv)] 4884 for i := range recv { 4885 recv[i] = a[i] * b[i] 4886 } 4887 } 4888 4889 func MulRecvI16(a []int16, b []int16, recv []int16) { 4890 a = a[:len(recv)] 4891 b = b[:len(recv)] 4892 for i := range recv { 4893 recv[i] = a[i] * b[i] 4894 } 4895 } 4896 4897 func MulRecvI32(a []int32, b []int32, recv []int32) { 4898 a = a[:len(recv)] 4899 b = b[:len(recv)] 4900 for i := range recv { 4901 recv[i] = a[i] * b[i] 4902 } 4903 } 4904 4905 func MulRecvI64(a []int64, b []int64, recv []int64) { 4906 a = a[:len(recv)] 4907 b = b[:len(recv)] 4908 for i := range recv { 4909 recv[i] = a[i] * b[i] 4910 } 4911 } 4912 4913 func MulRecvU(a []uint, b []uint, recv []uint) { 4914 a = a[:len(recv)] 4915 b = b[:len(recv)] 4916 for i := range recv { 4917 recv[i] = a[i] * b[i] 4918 } 4919 } 4920 4921 func MulRecvU8(a []uint8, b []uint8, recv []uint8) { 4922 a = a[:len(recv)] 4923 b = b[:len(recv)] 4924 for i := range recv { 4925 recv[i] = a[i] * b[i] 4926 } 4927 } 4928 4929 func MulRecvU16(a []uint16, b []uint16, recv []uint16) { 4930 a = a[:len(recv)] 4931 b = b[:len(recv)] 4932 for i := range recv { 4933 recv[i] = a[i] * b[i] 4934 } 4935 } 4936 4937 func MulRecvU32(a []uint32, b []uint32, recv []uint32) { 4938 a = a[:len(recv)] 4939 b = b[:len(recv)] 4940 for i := range recv { 4941 recv[i] = a[i] * b[i] 4942 } 4943 } 4944 4945 func MulRecvU64(a []uint64, b []uint64, recv []uint64) { 4946 a = a[:len(recv)] 4947 b = b[:len(recv)] 4948 for i := range recv { 4949 recv[i] = a[i] * b[i] 4950 } 4951 } 4952 4953 func MulRecvF32(a []float32, b []float32, recv []float32) { 4954 a = a[:len(recv)] 4955 b = b[:len(recv)] 4956 for i := range recv { 4957 recv[i] = a[i] * b[i] 4958 } 4959 } 4960 4961 func MulRecvF64(a []float64, b []float64, recv []float64) { 4962 a = a[:len(recv)] 4963 b = b[:len(recv)] 4964 for i := range recv { 4965 recv[i] = a[i] * b[i] 4966 } 4967 } 4968 4969 func MulRecvC64(a []complex64, b []complex64, recv []complex64) { 4970 a = a[:len(recv)] 4971 b = b[:len(recv)] 4972 for i := range recv { 4973 recv[i] = a[i] * b[i] 4974 } 4975 } 4976 4977 func MulRecvC128(a []complex128, b []complex128, recv []complex128) { 4978 a = a[:len(recv)] 4979 b = b[:len(recv)] 4980 for i := range recv { 4981 recv[i] = a[i] * b[i] 4982 } 4983 } 4984 4985 func DivRecvI(a []int, b []int, recv []int) (err error) { 4986 a = a[:len(recv)] 4987 b = b[:len(recv)] 4988 var errs errorIndices 4989 for i := range recv { 4990 if b[i] == 0 { 4991 errs = append(errs, i) 4992 recv[i] = 0 4993 continue 4994 } 4995 recv[i] = a[i] / b[i] 4996 } 4997 if err != nil { 4998 return 4999 } 5000 if len(errs) > 0 { 5001 return errs 5002 } 5003 return nil 5004 } 5005 5006 func DivRecvI8(a []int8, b []int8, recv []int8) (err error) { 5007 a = a[:len(recv)] 5008 b = b[:len(recv)] 5009 var errs errorIndices 5010 for i := range recv { 5011 if b[i] == 0 { 5012 errs = append(errs, i) 5013 recv[i] = 0 5014 continue 5015 } 5016 recv[i] = a[i] / b[i] 5017 } 5018 if err != nil { 5019 return 5020 } 5021 if len(errs) > 0 { 5022 return errs 5023 } 5024 return nil 5025 } 5026 5027 func DivRecvI16(a []int16, b []int16, recv []int16) (err error) { 5028 a = a[:len(recv)] 5029 b = b[:len(recv)] 5030 var errs errorIndices 5031 for i := range recv { 5032 if b[i] == 0 { 5033 errs = append(errs, i) 5034 recv[i] = 0 5035 continue 5036 } 5037 recv[i] = a[i] / b[i] 5038 } 5039 if err != nil { 5040 return 5041 } 5042 if len(errs) > 0 { 5043 return errs 5044 } 5045 return nil 5046 } 5047 5048 func DivRecvI32(a []int32, b []int32, recv []int32) (err error) { 5049 a = a[:len(recv)] 5050 b = b[:len(recv)] 5051 var errs errorIndices 5052 for i := range recv { 5053 if b[i] == 0 { 5054 errs = append(errs, i) 5055 recv[i] = 0 5056 continue 5057 } 5058 recv[i] = a[i] / b[i] 5059 } 5060 if err != nil { 5061 return 5062 } 5063 if len(errs) > 0 { 5064 return errs 5065 } 5066 return nil 5067 } 5068 5069 func DivRecvI64(a []int64, b []int64, recv []int64) (err error) { 5070 a = a[:len(recv)] 5071 b = b[:len(recv)] 5072 var errs errorIndices 5073 for i := range recv { 5074 if b[i] == 0 { 5075 errs = append(errs, i) 5076 recv[i] = 0 5077 continue 5078 } 5079 recv[i] = a[i] / b[i] 5080 } 5081 if err != nil { 5082 return 5083 } 5084 if len(errs) > 0 { 5085 return errs 5086 } 5087 return nil 5088 } 5089 5090 func DivRecvU(a []uint, b []uint, recv []uint) (err error) { 5091 a = a[:len(recv)] 5092 b = b[:len(recv)] 5093 var errs errorIndices 5094 for i := range recv { 5095 if b[i] == 0 { 5096 errs = append(errs, i) 5097 recv[i] = 0 5098 continue 5099 } 5100 recv[i] = a[i] / b[i] 5101 } 5102 if err != nil { 5103 return 5104 } 5105 if len(errs) > 0 { 5106 return errs 5107 } 5108 return nil 5109 } 5110 5111 func DivRecvU8(a []uint8, b []uint8, recv []uint8) (err error) { 5112 a = a[:len(recv)] 5113 b = b[:len(recv)] 5114 var errs errorIndices 5115 for i := range recv { 5116 if b[i] == 0 { 5117 errs = append(errs, i) 5118 recv[i] = 0 5119 continue 5120 } 5121 recv[i] = a[i] / b[i] 5122 } 5123 if err != nil { 5124 return 5125 } 5126 if len(errs) > 0 { 5127 return errs 5128 } 5129 return nil 5130 } 5131 5132 func DivRecvU16(a []uint16, b []uint16, recv []uint16) (err error) { 5133 a = a[:len(recv)] 5134 b = b[:len(recv)] 5135 var errs errorIndices 5136 for i := range recv { 5137 if b[i] == 0 { 5138 errs = append(errs, i) 5139 recv[i] = 0 5140 continue 5141 } 5142 recv[i] = a[i] / b[i] 5143 } 5144 if err != nil { 5145 return 5146 } 5147 if len(errs) > 0 { 5148 return errs 5149 } 5150 return nil 5151 } 5152 5153 func DivRecvU32(a []uint32, b []uint32, recv []uint32) (err error) { 5154 a = a[:len(recv)] 5155 b = b[:len(recv)] 5156 var errs errorIndices 5157 for i := range recv { 5158 if b[i] == 0 { 5159 errs = append(errs, i) 5160 recv[i] = 0 5161 continue 5162 } 5163 recv[i] = a[i] / b[i] 5164 } 5165 if err != nil { 5166 return 5167 } 5168 if len(errs) > 0 { 5169 return errs 5170 } 5171 return nil 5172 } 5173 5174 func DivRecvU64(a []uint64, b []uint64, recv []uint64) (err error) { 5175 a = a[:len(recv)] 5176 b = b[:len(recv)] 5177 var errs errorIndices 5178 for i := range recv { 5179 if b[i] == 0 { 5180 errs = append(errs, i) 5181 recv[i] = 0 5182 continue 5183 } 5184 recv[i] = a[i] / b[i] 5185 } 5186 if err != nil { 5187 return 5188 } 5189 if len(errs) > 0 { 5190 return errs 5191 } 5192 return nil 5193 } 5194 5195 func DivRecvF32(a []float32, b []float32, recv []float32) { 5196 a = a[:len(recv)] 5197 b = b[:len(recv)] 5198 for i := range recv { 5199 recv[i] = a[i] / b[i] 5200 } 5201 } 5202 5203 func DivRecvF64(a []float64, b []float64, recv []float64) { 5204 a = a[:len(recv)] 5205 b = b[:len(recv)] 5206 for i := range recv { 5207 recv[i] = a[i] / b[i] 5208 } 5209 } 5210 5211 func DivRecvC64(a []complex64, b []complex64, recv []complex64) { 5212 a = a[:len(recv)] 5213 b = b[:len(recv)] 5214 for i := range recv { 5215 recv[i] = a[i] / b[i] 5216 } 5217 } 5218 5219 func DivRecvC128(a []complex128, b []complex128, recv []complex128) { 5220 a = a[:len(recv)] 5221 b = b[:len(recv)] 5222 for i := range recv { 5223 recv[i] = a[i] / b[i] 5224 } 5225 } 5226 5227 func PowRecvF32(a []float32, b []float32, recv []float32) { 5228 a = a[:len(recv)] 5229 b = b[:len(recv)] 5230 for i := range recv { 5231 recv[i] = math32.Pow(a[i], b[i]) 5232 } 5233 } 5234 5235 func PowRecvF64(a []float64, b []float64, recv []float64) { 5236 a = a[:len(recv)] 5237 b = b[:len(recv)] 5238 for i := range recv { 5239 recv[i] = math.Pow(a[i], b[i]) 5240 } 5241 } 5242 5243 func PowRecvC64(a []complex64, b []complex64, recv []complex64) { 5244 a = a[:len(recv)] 5245 b = b[:len(recv)] 5246 for i := range recv { 5247 recv[i] = complex64(cmplx.Pow(complex128(a[i]), complex128(b[i]))) 5248 } 5249 } 5250 5251 func PowRecvC128(a []complex128, b []complex128, recv []complex128) { 5252 a = a[:len(recv)] 5253 b = b[:len(recv)] 5254 for i := range recv { 5255 recv[i] = cmplx.Pow(a[i], b[i]) 5256 } 5257 } 5258 5259 func ModRecvI(a []int, b []int, recv []int) { 5260 a = a[:len(recv)] 5261 b = b[:len(recv)] 5262 for i := range recv { 5263 recv[i] = a[i] % b[i] 5264 } 5265 } 5266 5267 func ModRecvI8(a []int8, b []int8, recv []int8) { 5268 a = a[:len(recv)] 5269 b = b[:len(recv)] 5270 for i := range recv { 5271 recv[i] = a[i] % b[i] 5272 } 5273 } 5274 5275 func ModRecvI16(a []int16, b []int16, recv []int16) { 5276 a = a[:len(recv)] 5277 b = b[:len(recv)] 5278 for i := range recv { 5279 recv[i] = a[i] % b[i] 5280 } 5281 } 5282 5283 func ModRecvI32(a []int32, b []int32, recv []int32) { 5284 a = a[:len(recv)] 5285 b = b[:len(recv)] 5286 for i := range recv { 5287 recv[i] = a[i] % b[i] 5288 } 5289 } 5290 5291 func ModRecvI64(a []int64, b []int64, recv []int64) { 5292 a = a[:len(recv)] 5293 b = b[:len(recv)] 5294 for i := range recv { 5295 recv[i] = a[i] % b[i] 5296 } 5297 } 5298 5299 func ModRecvU(a []uint, b []uint, recv []uint) { 5300 a = a[:len(recv)] 5301 b = b[:len(recv)] 5302 for i := range recv { 5303 recv[i] = a[i] % b[i] 5304 } 5305 } 5306 5307 func ModRecvU8(a []uint8, b []uint8, recv []uint8) { 5308 a = a[:len(recv)] 5309 b = b[:len(recv)] 5310 for i := range recv { 5311 recv[i] = a[i] % b[i] 5312 } 5313 } 5314 5315 func ModRecvU16(a []uint16, b []uint16, recv []uint16) { 5316 a = a[:len(recv)] 5317 b = b[:len(recv)] 5318 for i := range recv { 5319 recv[i] = a[i] % b[i] 5320 } 5321 } 5322 5323 func ModRecvU32(a []uint32, b []uint32, recv []uint32) { 5324 a = a[:len(recv)] 5325 b = b[:len(recv)] 5326 for i := range recv { 5327 recv[i] = a[i] % b[i] 5328 } 5329 } 5330 5331 func ModRecvU64(a []uint64, b []uint64, recv []uint64) { 5332 a = a[:len(recv)] 5333 b = b[:len(recv)] 5334 for i := range recv { 5335 recv[i] = a[i] % b[i] 5336 } 5337 } 5338 5339 func ModRecvF32(a []float32, b []float32, recv []float32) { 5340 a = a[:len(recv)] 5341 b = b[:len(recv)] 5342 for i := range recv { 5343 recv[i] = math32.Mod(a[i], b[i]) 5344 } 5345 } 5346 5347 func ModRecvF64(a []float64, b []float64, recv []float64) { 5348 a = a[:len(recv)] 5349 b = b[:len(recv)] 5350 for i := range recv { 5351 recv[i] = math.Mod(a[i], b[i]) 5352 } 5353 }