github.com/wzzhu/tensor@v0.9.24/internal/execution/generic_minmax.go (about)

     1  // Code generated by genlib2. DO NOT EDIT.
     2  
     3  package execution
     4  
     5  func VecMinI(a, b []int) {
     6  	a = a[:]
     7  	b = b[:len(a)]
     8  	for i, v := range a {
     9  		bv := b[i]
    10  		if bv < v {
    11  			a[i] = bv
    12  		}
    13  	}
    14  }
    15  
    16  func MinSVI(a int, b []int) {
    17  	for i := range b {
    18  		if a < b[i] {
    19  			b[i] = a
    20  		}
    21  	}
    22  }
    23  
    24  func MinVSI(a []int, b int) {
    25  	for i := range a {
    26  		if b < a[i] {
    27  			a[i] = b
    28  		}
    29  	}
    30  }
    31  
    32  func VecMaxI(a, b []int) {
    33  	a = a[:]
    34  	b = b[:len(a)]
    35  	for i, v := range a {
    36  		bv := b[i]
    37  		if bv > v {
    38  			a[i] = bv
    39  		}
    40  	}
    41  }
    42  
    43  func MaxSVI(a int, b []int) {
    44  	for i := range b {
    45  		if a > b[i] {
    46  			b[i] = a
    47  		}
    48  	}
    49  }
    50  
    51  func MaxVSI(a []int, b int) {
    52  	for i := range a {
    53  		if b > a[i] {
    54  			a[i] = b
    55  		}
    56  	}
    57  }
    58  func VecMinI8(a, b []int8) {
    59  	a = a[:]
    60  	b = b[:len(a)]
    61  	for i, v := range a {
    62  		bv := b[i]
    63  		if bv < v {
    64  			a[i] = bv
    65  		}
    66  	}
    67  }
    68  
    69  func MinSVI8(a int8, b []int8) {
    70  	for i := range b {
    71  		if a < b[i] {
    72  			b[i] = a
    73  		}
    74  	}
    75  }
    76  
    77  func MinVSI8(a []int8, b int8) {
    78  	for i := range a {
    79  		if b < a[i] {
    80  			a[i] = b
    81  		}
    82  	}
    83  }
    84  
    85  func VecMaxI8(a, b []int8) {
    86  	a = a[:]
    87  	b = b[:len(a)]
    88  	for i, v := range a {
    89  		bv := b[i]
    90  		if bv > v {
    91  			a[i] = bv
    92  		}
    93  	}
    94  }
    95  
    96  func MaxSVI8(a int8, b []int8) {
    97  	for i := range b {
    98  		if a > b[i] {
    99  			b[i] = a
   100  		}
   101  	}
   102  }
   103  
   104  func MaxVSI8(a []int8, b int8) {
   105  	for i := range a {
   106  		if b > a[i] {
   107  			a[i] = b
   108  		}
   109  	}
   110  }
   111  func VecMinI16(a, b []int16) {
   112  	a = a[:]
   113  	b = b[:len(a)]
   114  	for i, v := range a {
   115  		bv := b[i]
   116  		if bv < v {
   117  			a[i] = bv
   118  		}
   119  	}
   120  }
   121  
   122  func MinSVI16(a int16, b []int16) {
   123  	for i := range b {
   124  		if a < b[i] {
   125  			b[i] = a
   126  		}
   127  	}
   128  }
   129  
   130  func MinVSI16(a []int16, b int16) {
   131  	for i := range a {
   132  		if b < a[i] {
   133  			a[i] = b
   134  		}
   135  	}
   136  }
   137  
   138  func VecMaxI16(a, b []int16) {
   139  	a = a[:]
   140  	b = b[:len(a)]
   141  	for i, v := range a {
   142  		bv := b[i]
   143  		if bv > v {
   144  			a[i] = bv
   145  		}
   146  	}
   147  }
   148  
   149  func MaxSVI16(a int16, b []int16) {
   150  	for i := range b {
   151  		if a > b[i] {
   152  			b[i] = a
   153  		}
   154  	}
   155  }
   156  
   157  func MaxVSI16(a []int16, b int16) {
   158  	for i := range a {
   159  		if b > a[i] {
   160  			a[i] = b
   161  		}
   162  	}
   163  }
   164  func VecMinI32(a, b []int32) {
   165  	a = a[:]
   166  	b = b[:len(a)]
   167  	for i, v := range a {
   168  		bv := b[i]
   169  		if bv < v {
   170  			a[i] = bv
   171  		}
   172  	}
   173  }
   174  
   175  func MinSVI32(a int32, b []int32) {
   176  	for i := range b {
   177  		if a < b[i] {
   178  			b[i] = a
   179  		}
   180  	}
   181  }
   182  
   183  func MinVSI32(a []int32, b int32) {
   184  	for i := range a {
   185  		if b < a[i] {
   186  			a[i] = b
   187  		}
   188  	}
   189  }
   190  
   191  func VecMaxI32(a, b []int32) {
   192  	a = a[:]
   193  	b = b[:len(a)]
   194  	for i, v := range a {
   195  		bv := b[i]
   196  		if bv > v {
   197  			a[i] = bv
   198  		}
   199  	}
   200  }
   201  
   202  func MaxSVI32(a int32, b []int32) {
   203  	for i := range b {
   204  		if a > b[i] {
   205  			b[i] = a
   206  		}
   207  	}
   208  }
   209  
   210  func MaxVSI32(a []int32, b int32) {
   211  	for i := range a {
   212  		if b > a[i] {
   213  			a[i] = b
   214  		}
   215  	}
   216  }
   217  func VecMinI64(a, b []int64) {
   218  	a = a[:]
   219  	b = b[:len(a)]
   220  	for i, v := range a {
   221  		bv := b[i]
   222  		if bv < v {
   223  			a[i] = bv
   224  		}
   225  	}
   226  }
   227  
   228  func MinSVI64(a int64, b []int64) {
   229  	for i := range b {
   230  		if a < b[i] {
   231  			b[i] = a
   232  		}
   233  	}
   234  }
   235  
   236  func MinVSI64(a []int64, b int64) {
   237  	for i := range a {
   238  		if b < a[i] {
   239  			a[i] = b
   240  		}
   241  	}
   242  }
   243  
   244  func VecMaxI64(a, b []int64) {
   245  	a = a[:]
   246  	b = b[:len(a)]
   247  	for i, v := range a {
   248  		bv := b[i]
   249  		if bv > v {
   250  			a[i] = bv
   251  		}
   252  	}
   253  }
   254  
   255  func MaxSVI64(a int64, b []int64) {
   256  	for i := range b {
   257  		if a > b[i] {
   258  			b[i] = a
   259  		}
   260  	}
   261  }
   262  
   263  func MaxVSI64(a []int64, b int64) {
   264  	for i := range a {
   265  		if b > a[i] {
   266  			a[i] = b
   267  		}
   268  	}
   269  }
   270  func VecMinU(a, b []uint) {
   271  	a = a[:]
   272  	b = b[:len(a)]
   273  	for i, v := range a {
   274  		bv := b[i]
   275  		if bv < v {
   276  			a[i] = bv
   277  		}
   278  	}
   279  }
   280  
   281  func MinSVU(a uint, b []uint) {
   282  	for i := range b {
   283  		if a < b[i] {
   284  			b[i] = a
   285  		}
   286  	}
   287  }
   288  
   289  func MinVSU(a []uint, b uint) {
   290  	for i := range a {
   291  		if b < a[i] {
   292  			a[i] = b
   293  		}
   294  	}
   295  }
   296  
   297  func VecMaxU(a, b []uint) {
   298  	a = a[:]
   299  	b = b[:len(a)]
   300  	for i, v := range a {
   301  		bv := b[i]
   302  		if bv > v {
   303  			a[i] = bv
   304  		}
   305  	}
   306  }
   307  
   308  func MaxSVU(a uint, b []uint) {
   309  	for i := range b {
   310  		if a > b[i] {
   311  			b[i] = a
   312  		}
   313  	}
   314  }
   315  
   316  func MaxVSU(a []uint, b uint) {
   317  	for i := range a {
   318  		if b > a[i] {
   319  			a[i] = b
   320  		}
   321  	}
   322  }
   323  func VecMinU8(a, b []uint8) {
   324  	a = a[:]
   325  	b = b[:len(a)]
   326  	for i, v := range a {
   327  		bv := b[i]
   328  		if bv < v {
   329  			a[i] = bv
   330  		}
   331  	}
   332  }
   333  
   334  func MinSVU8(a uint8, b []uint8) {
   335  	for i := range b {
   336  		if a < b[i] {
   337  			b[i] = a
   338  		}
   339  	}
   340  }
   341  
   342  func MinVSU8(a []uint8, b uint8) {
   343  	for i := range a {
   344  		if b < a[i] {
   345  			a[i] = b
   346  		}
   347  	}
   348  }
   349  
   350  func VecMaxU8(a, b []uint8) {
   351  	a = a[:]
   352  	b = b[:len(a)]
   353  	for i, v := range a {
   354  		bv := b[i]
   355  		if bv > v {
   356  			a[i] = bv
   357  		}
   358  	}
   359  }
   360  
   361  func MaxSVU8(a uint8, b []uint8) {
   362  	for i := range b {
   363  		if a > b[i] {
   364  			b[i] = a
   365  		}
   366  	}
   367  }
   368  
   369  func MaxVSU8(a []uint8, b uint8) {
   370  	for i := range a {
   371  		if b > a[i] {
   372  			a[i] = b
   373  		}
   374  	}
   375  }
   376  func VecMinU16(a, b []uint16) {
   377  	a = a[:]
   378  	b = b[:len(a)]
   379  	for i, v := range a {
   380  		bv := b[i]
   381  		if bv < v {
   382  			a[i] = bv
   383  		}
   384  	}
   385  }
   386  
   387  func MinSVU16(a uint16, b []uint16) {
   388  	for i := range b {
   389  		if a < b[i] {
   390  			b[i] = a
   391  		}
   392  	}
   393  }
   394  
   395  func MinVSU16(a []uint16, b uint16) {
   396  	for i := range a {
   397  		if b < a[i] {
   398  			a[i] = b
   399  		}
   400  	}
   401  }
   402  
   403  func VecMaxU16(a, b []uint16) {
   404  	a = a[:]
   405  	b = b[:len(a)]
   406  	for i, v := range a {
   407  		bv := b[i]
   408  		if bv > v {
   409  			a[i] = bv
   410  		}
   411  	}
   412  }
   413  
   414  func MaxSVU16(a uint16, b []uint16) {
   415  	for i := range b {
   416  		if a > b[i] {
   417  			b[i] = a
   418  		}
   419  	}
   420  }
   421  
   422  func MaxVSU16(a []uint16, b uint16) {
   423  	for i := range a {
   424  		if b > a[i] {
   425  			a[i] = b
   426  		}
   427  	}
   428  }
   429  func VecMinU32(a, b []uint32) {
   430  	a = a[:]
   431  	b = b[:len(a)]
   432  	for i, v := range a {
   433  		bv := b[i]
   434  		if bv < v {
   435  			a[i] = bv
   436  		}
   437  	}
   438  }
   439  
   440  func MinSVU32(a uint32, b []uint32) {
   441  	for i := range b {
   442  		if a < b[i] {
   443  			b[i] = a
   444  		}
   445  	}
   446  }
   447  
   448  func MinVSU32(a []uint32, b uint32) {
   449  	for i := range a {
   450  		if b < a[i] {
   451  			a[i] = b
   452  		}
   453  	}
   454  }
   455  
   456  func VecMaxU32(a, b []uint32) {
   457  	a = a[:]
   458  	b = b[:len(a)]
   459  	for i, v := range a {
   460  		bv := b[i]
   461  		if bv > v {
   462  			a[i] = bv
   463  		}
   464  	}
   465  }
   466  
   467  func MaxSVU32(a uint32, b []uint32) {
   468  	for i := range b {
   469  		if a > b[i] {
   470  			b[i] = a
   471  		}
   472  	}
   473  }
   474  
   475  func MaxVSU32(a []uint32, b uint32) {
   476  	for i := range a {
   477  		if b > a[i] {
   478  			a[i] = b
   479  		}
   480  	}
   481  }
   482  func VecMinU64(a, b []uint64) {
   483  	a = a[:]
   484  	b = b[:len(a)]
   485  	for i, v := range a {
   486  		bv := b[i]
   487  		if bv < v {
   488  			a[i] = bv
   489  		}
   490  	}
   491  }
   492  
   493  func MinSVU64(a uint64, b []uint64) {
   494  	for i := range b {
   495  		if a < b[i] {
   496  			b[i] = a
   497  		}
   498  	}
   499  }
   500  
   501  func MinVSU64(a []uint64, b uint64) {
   502  	for i := range a {
   503  		if b < a[i] {
   504  			a[i] = b
   505  		}
   506  	}
   507  }
   508  
   509  func VecMaxU64(a, b []uint64) {
   510  	a = a[:]
   511  	b = b[:len(a)]
   512  	for i, v := range a {
   513  		bv := b[i]
   514  		if bv > v {
   515  			a[i] = bv
   516  		}
   517  	}
   518  }
   519  
   520  func MaxSVU64(a uint64, b []uint64) {
   521  	for i := range b {
   522  		if a > b[i] {
   523  			b[i] = a
   524  		}
   525  	}
   526  }
   527  
   528  func MaxVSU64(a []uint64, b uint64) {
   529  	for i := range a {
   530  		if b > a[i] {
   531  			a[i] = b
   532  		}
   533  	}
   534  }
   535  func VecMinF32(a, b []float32) {
   536  	a = a[:]
   537  	b = b[:len(a)]
   538  	for i, v := range a {
   539  		bv := b[i]
   540  		if bv < v {
   541  			a[i] = bv
   542  		}
   543  	}
   544  }
   545  
   546  func MinSVF32(a float32, b []float32) {
   547  	for i := range b {
   548  		if a < b[i] {
   549  			b[i] = a
   550  		}
   551  	}
   552  }
   553  
   554  func MinVSF32(a []float32, b float32) {
   555  	for i := range a {
   556  		if b < a[i] {
   557  			a[i] = b
   558  		}
   559  	}
   560  }
   561  
   562  func VecMaxF32(a, b []float32) {
   563  	a = a[:]
   564  	b = b[:len(a)]
   565  	for i, v := range a {
   566  		bv := b[i]
   567  		if bv > v {
   568  			a[i] = bv
   569  		}
   570  	}
   571  }
   572  
   573  func MaxSVF32(a float32, b []float32) {
   574  	for i := range b {
   575  		if a > b[i] {
   576  			b[i] = a
   577  		}
   578  	}
   579  }
   580  
   581  func MaxVSF32(a []float32, b float32) {
   582  	for i := range a {
   583  		if b > a[i] {
   584  			a[i] = b
   585  		}
   586  	}
   587  }
   588  func VecMinF64(a, b []float64) {
   589  	a = a[:]
   590  	b = b[:len(a)]
   591  	for i, v := range a {
   592  		bv := b[i]
   593  		if bv < v {
   594  			a[i] = bv
   595  		}
   596  	}
   597  }
   598  
   599  func MinSVF64(a float64, b []float64) {
   600  	for i := range b {
   601  		if a < b[i] {
   602  			b[i] = a
   603  		}
   604  	}
   605  }
   606  
   607  func MinVSF64(a []float64, b float64) {
   608  	for i := range a {
   609  		if b < a[i] {
   610  			a[i] = b
   611  		}
   612  	}
   613  }
   614  
   615  func VecMaxF64(a, b []float64) {
   616  	a = a[:]
   617  	b = b[:len(a)]
   618  	for i, v := range a {
   619  		bv := b[i]
   620  		if bv > v {
   621  			a[i] = bv
   622  		}
   623  	}
   624  }
   625  
   626  func MaxSVF64(a float64, b []float64) {
   627  	for i := range b {
   628  		if a > b[i] {
   629  			b[i] = a
   630  		}
   631  	}
   632  }
   633  
   634  func MaxVSF64(a []float64, b float64) {
   635  	for i := range a {
   636  		if b > a[i] {
   637  			a[i] = b
   638  		}
   639  	}
   640  }
   641  func VecMinStr(a, b []string) {
   642  	a = a[:]
   643  	b = b[:len(a)]
   644  	for i, v := range a {
   645  		bv := b[i]
   646  		if bv < v {
   647  			a[i] = bv
   648  		}
   649  	}
   650  }
   651  
   652  func MinSVStr(a string, b []string) {
   653  	for i := range b {
   654  		if a < b[i] {
   655  			b[i] = a
   656  		}
   657  	}
   658  }
   659  
   660  func MinVSStr(a []string, b string) {
   661  	for i := range a {
   662  		if b < a[i] {
   663  			a[i] = b
   664  		}
   665  	}
   666  }
   667  
   668  func VecMaxStr(a, b []string) {
   669  	a = a[:]
   670  	b = b[:len(a)]
   671  	for i, v := range a {
   672  		bv := b[i]
   673  		if bv > v {
   674  			a[i] = bv
   675  		}
   676  	}
   677  }
   678  
   679  func MaxSVStr(a string, b []string) {
   680  	for i := range b {
   681  		if a > b[i] {
   682  			b[i] = a
   683  		}
   684  	}
   685  }
   686  
   687  func MaxVSStr(a []string, b string) {
   688  	for i := range a {
   689  		if b > a[i] {
   690  			a[i] = b
   691  		}
   692  	}
   693  }
   694  func MinI(a, b int) (c int) {
   695  	if a < b {
   696  		return a
   697  	}
   698  	return b
   699  }
   700  
   701  func MaxI(a, b int) (c int) {
   702  	if a > b {
   703  		return a
   704  	}
   705  	return b
   706  }
   707  func MinI8(a, b int8) (c int8) {
   708  	if a < b {
   709  		return a
   710  	}
   711  	return b
   712  }
   713  
   714  func MaxI8(a, b int8) (c int8) {
   715  	if a > b {
   716  		return a
   717  	}
   718  	return b
   719  }
   720  func MinI16(a, b int16) (c int16) {
   721  	if a < b {
   722  		return a
   723  	}
   724  	return b
   725  }
   726  
   727  func MaxI16(a, b int16) (c int16) {
   728  	if a > b {
   729  		return a
   730  	}
   731  	return b
   732  }
   733  func MinI32(a, b int32) (c int32) {
   734  	if a < b {
   735  		return a
   736  	}
   737  	return b
   738  }
   739  
   740  func MaxI32(a, b int32) (c int32) {
   741  	if a > b {
   742  		return a
   743  	}
   744  	return b
   745  }
   746  func MinI64(a, b int64) (c int64) {
   747  	if a < b {
   748  		return a
   749  	}
   750  	return b
   751  }
   752  
   753  func MaxI64(a, b int64) (c int64) {
   754  	if a > b {
   755  		return a
   756  	}
   757  	return b
   758  }
   759  func MinU(a, b uint) (c uint) {
   760  	if a < b {
   761  		return a
   762  	}
   763  	return b
   764  }
   765  
   766  func MaxU(a, b uint) (c uint) {
   767  	if a > b {
   768  		return a
   769  	}
   770  	return b
   771  }
   772  func MinU8(a, b uint8) (c uint8) {
   773  	if a < b {
   774  		return a
   775  	}
   776  	return b
   777  }
   778  
   779  func MaxU8(a, b uint8) (c uint8) {
   780  	if a > b {
   781  		return a
   782  	}
   783  	return b
   784  }
   785  func MinU16(a, b uint16) (c uint16) {
   786  	if a < b {
   787  		return a
   788  	}
   789  	return b
   790  }
   791  
   792  func MaxU16(a, b uint16) (c uint16) {
   793  	if a > b {
   794  		return a
   795  	}
   796  	return b
   797  }
   798  func MinU32(a, b uint32) (c uint32) {
   799  	if a < b {
   800  		return a
   801  	}
   802  	return b
   803  }
   804  
   805  func MaxU32(a, b uint32) (c uint32) {
   806  	if a > b {
   807  		return a
   808  	}
   809  	return b
   810  }
   811  func MinU64(a, b uint64) (c uint64) {
   812  	if a < b {
   813  		return a
   814  	}
   815  	return b
   816  }
   817  
   818  func MaxU64(a, b uint64) (c uint64) {
   819  	if a > b {
   820  		return a
   821  	}
   822  	return b
   823  }
   824  func MinF32(a, b float32) (c float32) {
   825  	if a < b {
   826  		return a
   827  	}
   828  	return b
   829  }
   830  
   831  func MaxF32(a, b float32) (c float32) {
   832  	if a > b {
   833  		return a
   834  	}
   835  	return b
   836  }
   837  func MinF64(a, b float64) (c float64) {
   838  	if a < b {
   839  		return a
   840  	}
   841  	return b
   842  }
   843  
   844  func MaxF64(a, b float64) (c float64) {
   845  	if a > b {
   846  		return a
   847  	}
   848  	return b
   849  }
   850  func MinStr(a, b string) (c string) {
   851  	if a < b {
   852  		return a
   853  	}
   854  	return b
   855  }
   856  
   857  func MaxStr(a, b string) (c string) {
   858  	if a > b {
   859  		return a
   860  	}
   861  	return b
   862  }
   863  func MinIterSVI(a int, b []int, bit Iterator) (err error) {
   864  	var i int
   865  	var validi bool
   866  	for {
   867  		if i, validi, err = bit.NextValidity(); err != nil {
   868  			err = handleNoOp(err)
   869  			break
   870  		}
   871  		if validi {
   872  			if a < b[i] {
   873  				b[i] = a
   874  			}
   875  		}
   876  	}
   877  	return
   878  }
   879  
   880  func MinIterVSI(a []int, b int, ait Iterator) (err error) {
   881  	var i int
   882  	var validi bool
   883  	for {
   884  		if i, validi, err = ait.NextValidity(); err != nil {
   885  			err = handleNoOp(err)
   886  			break
   887  		}
   888  		if validi {
   889  			if b < a[i] {
   890  				a[i] = b
   891  			}
   892  		}
   893  	}
   894  	return
   895  }
   896  
   897  func VecMinIterI(a, b []int, ait, bit Iterator) (err error) {
   898  	var i, j int
   899  	var validi, validj bool
   900  	for {
   901  		if i, validi, err = ait.NextValidity(); err != nil {
   902  			err = handleNoOp(err)
   903  			break
   904  		}
   905  		if j, validj, err = bit.NextValidity(); err != nil {
   906  			err = handleNoOp(err)
   907  			break
   908  		}
   909  		if validi && validj {
   910  			if b[j] < a[i] {
   911  				a[i] = b[j]
   912  			}
   913  		}
   914  	}
   915  	return
   916  }
   917  
   918  func MaxIterSVI(a int, b []int, bit Iterator) (err error) {
   919  	var i int
   920  	var validi bool
   921  	for {
   922  		if i, validi, err = bit.NextValidity(); err != nil {
   923  			err = handleNoOp(err)
   924  			break
   925  		}
   926  		if validi {
   927  			if a > b[i] {
   928  				b[i] = a
   929  			}
   930  		}
   931  	}
   932  	return
   933  }
   934  
   935  func MaxIterVSI(a []int, b int, ait Iterator) (err error) {
   936  	var i int
   937  	var validi bool
   938  	for {
   939  		if i, validi, err = ait.NextValidity(); err != nil {
   940  			err = handleNoOp(err)
   941  			break
   942  		}
   943  		if validi {
   944  			if b > a[i] {
   945  				a[i] = b
   946  			}
   947  		}
   948  	}
   949  	return
   950  }
   951  
   952  func VecMaxIterI(a, b []int, ait, bit Iterator) (err error) {
   953  	var i, j int
   954  	var validi, validj bool
   955  	for {
   956  		if i, validi, err = ait.NextValidity(); err != nil {
   957  			err = handleNoOp(err)
   958  			break
   959  		}
   960  		if j, validj, err = bit.NextValidity(); err != nil {
   961  			err = handleNoOp(err)
   962  			break
   963  		}
   964  		if validi && validj {
   965  			if b[j] > a[i] {
   966  				a[i] = b[j]
   967  			}
   968  		}
   969  	}
   970  	return
   971  }
   972  
   973  func MinIterSVI8(a int8, b []int8, bit Iterator) (err error) {
   974  	var i int
   975  	var validi bool
   976  	for {
   977  		if i, validi, err = bit.NextValidity(); err != nil {
   978  			err = handleNoOp(err)
   979  			break
   980  		}
   981  		if validi {
   982  			if a < b[i] {
   983  				b[i] = a
   984  			}
   985  		}
   986  	}
   987  	return
   988  }
   989  
   990  func MinIterVSI8(a []int8, b int8, ait Iterator) (err error) {
   991  	var i int
   992  	var validi bool
   993  	for {
   994  		if i, validi, err = ait.NextValidity(); err != nil {
   995  			err = handleNoOp(err)
   996  			break
   997  		}
   998  		if validi {
   999  			if b < a[i] {
  1000  				a[i] = b
  1001  			}
  1002  		}
  1003  	}
  1004  	return
  1005  }
  1006  
  1007  func VecMinIterI8(a, b []int8, ait, bit Iterator) (err error) {
  1008  	var i, j int
  1009  	var validi, validj bool
  1010  	for {
  1011  		if i, validi, err = ait.NextValidity(); err != nil {
  1012  			err = handleNoOp(err)
  1013  			break
  1014  		}
  1015  		if j, validj, err = bit.NextValidity(); err != nil {
  1016  			err = handleNoOp(err)
  1017  			break
  1018  		}
  1019  		if validi && validj {
  1020  			if b[j] < a[i] {
  1021  				a[i] = b[j]
  1022  			}
  1023  		}
  1024  	}
  1025  	return
  1026  }
  1027  
  1028  func MaxIterSVI8(a int8, b []int8, bit Iterator) (err error) {
  1029  	var i int
  1030  	var validi bool
  1031  	for {
  1032  		if i, validi, err = bit.NextValidity(); err != nil {
  1033  			err = handleNoOp(err)
  1034  			break
  1035  		}
  1036  		if validi {
  1037  			if a > b[i] {
  1038  				b[i] = a
  1039  			}
  1040  		}
  1041  	}
  1042  	return
  1043  }
  1044  
  1045  func MaxIterVSI8(a []int8, b int8, ait Iterator) (err error) {
  1046  	var i int
  1047  	var validi bool
  1048  	for {
  1049  		if i, validi, err = ait.NextValidity(); err != nil {
  1050  			err = handleNoOp(err)
  1051  			break
  1052  		}
  1053  		if validi {
  1054  			if b > a[i] {
  1055  				a[i] = b
  1056  			}
  1057  		}
  1058  	}
  1059  	return
  1060  }
  1061  
  1062  func VecMaxIterI8(a, b []int8, ait, bit Iterator) (err error) {
  1063  	var i, j int
  1064  	var validi, validj bool
  1065  	for {
  1066  		if i, validi, err = ait.NextValidity(); err != nil {
  1067  			err = handleNoOp(err)
  1068  			break
  1069  		}
  1070  		if j, validj, err = bit.NextValidity(); err != nil {
  1071  			err = handleNoOp(err)
  1072  			break
  1073  		}
  1074  		if validi && validj {
  1075  			if b[j] > a[i] {
  1076  				a[i] = b[j]
  1077  			}
  1078  		}
  1079  	}
  1080  	return
  1081  }
  1082  
  1083  func MinIterSVI16(a int16, b []int16, bit Iterator) (err error) {
  1084  	var i int
  1085  	var validi bool
  1086  	for {
  1087  		if i, validi, err = bit.NextValidity(); err != nil {
  1088  			err = handleNoOp(err)
  1089  			break
  1090  		}
  1091  		if validi {
  1092  			if a < b[i] {
  1093  				b[i] = a
  1094  			}
  1095  		}
  1096  	}
  1097  	return
  1098  }
  1099  
  1100  func MinIterVSI16(a []int16, b int16, ait Iterator) (err error) {
  1101  	var i int
  1102  	var validi bool
  1103  	for {
  1104  		if i, validi, err = ait.NextValidity(); err != nil {
  1105  			err = handleNoOp(err)
  1106  			break
  1107  		}
  1108  		if validi {
  1109  			if b < a[i] {
  1110  				a[i] = b
  1111  			}
  1112  		}
  1113  	}
  1114  	return
  1115  }
  1116  
  1117  func VecMinIterI16(a, b []int16, ait, bit Iterator) (err error) {
  1118  	var i, j int
  1119  	var validi, validj bool
  1120  	for {
  1121  		if i, validi, err = ait.NextValidity(); err != nil {
  1122  			err = handleNoOp(err)
  1123  			break
  1124  		}
  1125  		if j, validj, err = bit.NextValidity(); err != nil {
  1126  			err = handleNoOp(err)
  1127  			break
  1128  		}
  1129  		if validi && validj {
  1130  			if b[j] < a[i] {
  1131  				a[i] = b[j]
  1132  			}
  1133  		}
  1134  	}
  1135  	return
  1136  }
  1137  
  1138  func MaxIterSVI16(a int16, b []int16, bit Iterator) (err error) {
  1139  	var i int
  1140  	var validi bool
  1141  	for {
  1142  		if i, validi, err = bit.NextValidity(); err != nil {
  1143  			err = handleNoOp(err)
  1144  			break
  1145  		}
  1146  		if validi {
  1147  			if a > b[i] {
  1148  				b[i] = a
  1149  			}
  1150  		}
  1151  	}
  1152  	return
  1153  }
  1154  
  1155  func MaxIterVSI16(a []int16, b int16, ait Iterator) (err error) {
  1156  	var i int
  1157  	var validi bool
  1158  	for {
  1159  		if i, validi, err = ait.NextValidity(); err != nil {
  1160  			err = handleNoOp(err)
  1161  			break
  1162  		}
  1163  		if validi {
  1164  			if b > a[i] {
  1165  				a[i] = b
  1166  			}
  1167  		}
  1168  	}
  1169  	return
  1170  }
  1171  
  1172  func VecMaxIterI16(a, b []int16, ait, bit Iterator) (err error) {
  1173  	var i, j int
  1174  	var validi, validj bool
  1175  	for {
  1176  		if i, validi, err = ait.NextValidity(); err != nil {
  1177  			err = handleNoOp(err)
  1178  			break
  1179  		}
  1180  		if j, validj, err = bit.NextValidity(); err != nil {
  1181  			err = handleNoOp(err)
  1182  			break
  1183  		}
  1184  		if validi && validj {
  1185  			if b[j] > a[i] {
  1186  				a[i] = b[j]
  1187  			}
  1188  		}
  1189  	}
  1190  	return
  1191  }
  1192  
  1193  func MinIterSVI32(a int32, b []int32, bit Iterator) (err error) {
  1194  	var i int
  1195  	var validi bool
  1196  	for {
  1197  		if i, validi, err = bit.NextValidity(); err != nil {
  1198  			err = handleNoOp(err)
  1199  			break
  1200  		}
  1201  		if validi {
  1202  			if a < b[i] {
  1203  				b[i] = a
  1204  			}
  1205  		}
  1206  	}
  1207  	return
  1208  }
  1209  
  1210  func MinIterVSI32(a []int32, b int32, ait Iterator) (err error) {
  1211  	var i int
  1212  	var validi bool
  1213  	for {
  1214  		if i, validi, err = ait.NextValidity(); err != nil {
  1215  			err = handleNoOp(err)
  1216  			break
  1217  		}
  1218  		if validi {
  1219  			if b < a[i] {
  1220  				a[i] = b
  1221  			}
  1222  		}
  1223  	}
  1224  	return
  1225  }
  1226  
  1227  func VecMinIterI32(a, b []int32, ait, bit Iterator) (err error) {
  1228  	var i, j int
  1229  	var validi, validj bool
  1230  	for {
  1231  		if i, validi, err = ait.NextValidity(); err != nil {
  1232  			err = handleNoOp(err)
  1233  			break
  1234  		}
  1235  		if j, validj, err = bit.NextValidity(); err != nil {
  1236  			err = handleNoOp(err)
  1237  			break
  1238  		}
  1239  		if validi && validj {
  1240  			if b[j] < a[i] {
  1241  				a[i] = b[j]
  1242  			}
  1243  		}
  1244  	}
  1245  	return
  1246  }
  1247  
  1248  func MaxIterSVI32(a int32, b []int32, bit Iterator) (err error) {
  1249  	var i int
  1250  	var validi bool
  1251  	for {
  1252  		if i, validi, err = bit.NextValidity(); err != nil {
  1253  			err = handleNoOp(err)
  1254  			break
  1255  		}
  1256  		if validi {
  1257  			if a > b[i] {
  1258  				b[i] = a
  1259  			}
  1260  		}
  1261  	}
  1262  	return
  1263  }
  1264  
  1265  func MaxIterVSI32(a []int32, b int32, ait Iterator) (err error) {
  1266  	var i int
  1267  	var validi bool
  1268  	for {
  1269  		if i, validi, err = ait.NextValidity(); err != nil {
  1270  			err = handleNoOp(err)
  1271  			break
  1272  		}
  1273  		if validi {
  1274  			if b > a[i] {
  1275  				a[i] = b
  1276  			}
  1277  		}
  1278  	}
  1279  	return
  1280  }
  1281  
  1282  func VecMaxIterI32(a, b []int32, ait, bit Iterator) (err error) {
  1283  	var i, j int
  1284  	var validi, validj bool
  1285  	for {
  1286  		if i, validi, err = ait.NextValidity(); err != nil {
  1287  			err = handleNoOp(err)
  1288  			break
  1289  		}
  1290  		if j, validj, err = bit.NextValidity(); err != nil {
  1291  			err = handleNoOp(err)
  1292  			break
  1293  		}
  1294  		if validi && validj {
  1295  			if b[j] > a[i] {
  1296  				a[i] = b[j]
  1297  			}
  1298  		}
  1299  	}
  1300  	return
  1301  }
  1302  
  1303  func MinIterSVI64(a int64, b []int64, bit Iterator) (err error) {
  1304  	var i int
  1305  	var validi bool
  1306  	for {
  1307  		if i, validi, err = bit.NextValidity(); err != nil {
  1308  			err = handleNoOp(err)
  1309  			break
  1310  		}
  1311  		if validi {
  1312  			if a < b[i] {
  1313  				b[i] = a
  1314  			}
  1315  		}
  1316  	}
  1317  	return
  1318  }
  1319  
  1320  func MinIterVSI64(a []int64, b int64, ait Iterator) (err error) {
  1321  	var i int
  1322  	var validi bool
  1323  	for {
  1324  		if i, validi, err = ait.NextValidity(); err != nil {
  1325  			err = handleNoOp(err)
  1326  			break
  1327  		}
  1328  		if validi {
  1329  			if b < a[i] {
  1330  				a[i] = b
  1331  			}
  1332  		}
  1333  	}
  1334  	return
  1335  }
  1336  
  1337  func VecMinIterI64(a, b []int64, ait, bit Iterator) (err error) {
  1338  	var i, j int
  1339  	var validi, validj bool
  1340  	for {
  1341  		if i, validi, err = ait.NextValidity(); err != nil {
  1342  			err = handleNoOp(err)
  1343  			break
  1344  		}
  1345  		if j, validj, err = bit.NextValidity(); err != nil {
  1346  			err = handleNoOp(err)
  1347  			break
  1348  		}
  1349  		if validi && validj {
  1350  			if b[j] < a[i] {
  1351  				a[i] = b[j]
  1352  			}
  1353  		}
  1354  	}
  1355  	return
  1356  }
  1357  
  1358  func MaxIterSVI64(a int64, b []int64, bit Iterator) (err error) {
  1359  	var i int
  1360  	var validi bool
  1361  	for {
  1362  		if i, validi, err = bit.NextValidity(); err != nil {
  1363  			err = handleNoOp(err)
  1364  			break
  1365  		}
  1366  		if validi {
  1367  			if a > b[i] {
  1368  				b[i] = a
  1369  			}
  1370  		}
  1371  	}
  1372  	return
  1373  }
  1374  
  1375  func MaxIterVSI64(a []int64, b int64, ait Iterator) (err error) {
  1376  	var i int
  1377  	var validi bool
  1378  	for {
  1379  		if i, validi, err = ait.NextValidity(); err != nil {
  1380  			err = handleNoOp(err)
  1381  			break
  1382  		}
  1383  		if validi {
  1384  			if b > a[i] {
  1385  				a[i] = b
  1386  			}
  1387  		}
  1388  	}
  1389  	return
  1390  }
  1391  
  1392  func VecMaxIterI64(a, b []int64, ait, 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  			if b[j] > a[i] {
  1406  				a[i] = b[j]
  1407  			}
  1408  		}
  1409  	}
  1410  	return
  1411  }
  1412  
  1413  func MinIterSVU(a uint, b []uint, bit Iterator) (err error) {
  1414  	var i int
  1415  	var validi bool
  1416  	for {
  1417  		if i, validi, err = bit.NextValidity(); err != nil {
  1418  			err = handleNoOp(err)
  1419  			break
  1420  		}
  1421  		if validi {
  1422  			if a < b[i] {
  1423  				b[i] = a
  1424  			}
  1425  		}
  1426  	}
  1427  	return
  1428  }
  1429  
  1430  func MinIterVSU(a []uint, b uint, ait Iterator) (err error) {
  1431  	var i int
  1432  	var validi bool
  1433  	for {
  1434  		if i, validi, err = ait.NextValidity(); err != nil {
  1435  			err = handleNoOp(err)
  1436  			break
  1437  		}
  1438  		if validi {
  1439  			if b < a[i] {
  1440  				a[i] = b
  1441  			}
  1442  		}
  1443  	}
  1444  	return
  1445  }
  1446  
  1447  func VecMinIterU(a, b []uint, ait, bit Iterator) (err error) {
  1448  	var i, j int
  1449  	var validi, validj bool
  1450  	for {
  1451  		if i, validi, err = ait.NextValidity(); err != nil {
  1452  			err = handleNoOp(err)
  1453  			break
  1454  		}
  1455  		if j, validj, err = bit.NextValidity(); err != nil {
  1456  			err = handleNoOp(err)
  1457  			break
  1458  		}
  1459  		if validi && validj {
  1460  			if b[j] < a[i] {
  1461  				a[i] = b[j]
  1462  			}
  1463  		}
  1464  	}
  1465  	return
  1466  }
  1467  
  1468  func MaxIterSVU(a uint, b []uint, bit Iterator) (err error) {
  1469  	var i int
  1470  	var validi bool
  1471  	for {
  1472  		if i, validi, err = bit.NextValidity(); err != nil {
  1473  			err = handleNoOp(err)
  1474  			break
  1475  		}
  1476  		if validi {
  1477  			if a > b[i] {
  1478  				b[i] = a
  1479  			}
  1480  		}
  1481  	}
  1482  	return
  1483  }
  1484  
  1485  func MaxIterVSU(a []uint, b uint, ait Iterator) (err error) {
  1486  	var i int
  1487  	var validi bool
  1488  	for {
  1489  		if i, validi, err = ait.NextValidity(); err != nil {
  1490  			err = handleNoOp(err)
  1491  			break
  1492  		}
  1493  		if validi {
  1494  			if b > a[i] {
  1495  				a[i] = b
  1496  			}
  1497  		}
  1498  	}
  1499  	return
  1500  }
  1501  
  1502  func VecMaxIterU(a, b []uint, ait, bit Iterator) (err error) {
  1503  	var i, j int
  1504  	var validi, validj bool
  1505  	for {
  1506  		if i, validi, err = ait.NextValidity(); err != nil {
  1507  			err = handleNoOp(err)
  1508  			break
  1509  		}
  1510  		if j, validj, err = bit.NextValidity(); err != nil {
  1511  			err = handleNoOp(err)
  1512  			break
  1513  		}
  1514  		if validi && validj {
  1515  			if b[j] > a[i] {
  1516  				a[i] = b[j]
  1517  			}
  1518  		}
  1519  	}
  1520  	return
  1521  }
  1522  
  1523  func MinIterSVU8(a uint8, b []uint8, bit Iterator) (err error) {
  1524  	var i int
  1525  	var validi bool
  1526  	for {
  1527  		if i, validi, err = bit.NextValidity(); err != nil {
  1528  			err = handleNoOp(err)
  1529  			break
  1530  		}
  1531  		if validi {
  1532  			if a < b[i] {
  1533  				b[i] = a
  1534  			}
  1535  		}
  1536  	}
  1537  	return
  1538  }
  1539  
  1540  func MinIterVSU8(a []uint8, b uint8, ait Iterator) (err error) {
  1541  	var i int
  1542  	var validi bool
  1543  	for {
  1544  		if i, validi, err = ait.NextValidity(); err != nil {
  1545  			err = handleNoOp(err)
  1546  			break
  1547  		}
  1548  		if validi {
  1549  			if b < a[i] {
  1550  				a[i] = b
  1551  			}
  1552  		}
  1553  	}
  1554  	return
  1555  }
  1556  
  1557  func VecMinIterU8(a, b []uint8, ait, bit Iterator) (err error) {
  1558  	var i, j int
  1559  	var validi, validj bool
  1560  	for {
  1561  		if i, validi, err = ait.NextValidity(); err != nil {
  1562  			err = handleNoOp(err)
  1563  			break
  1564  		}
  1565  		if j, validj, err = bit.NextValidity(); err != nil {
  1566  			err = handleNoOp(err)
  1567  			break
  1568  		}
  1569  		if validi && validj {
  1570  			if b[j] < a[i] {
  1571  				a[i] = b[j]
  1572  			}
  1573  		}
  1574  	}
  1575  	return
  1576  }
  1577  
  1578  func MaxIterSVU8(a uint8, b []uint8, bit Iterator) (err error) {
  1579  	var i int
  1580  	var validi bool
  1581  	for {
  1582  		if i, validi, err = bit.NextValidity(); err != nil {
  1583  			err = handleNoOp(err)
  1584  			break
  1585  		}
  1586  		if validi {
  1587  			if a > b[i] {
  1588  				b[i] = a
  1589  			}
  1590  		}
  1591  	}
  1592  	return
  1593  }
  1594  
  1595  func MaxIterVSU8(a []uint8, b uint8, ait Iterator) (err error) {
  1596  	var i int
  1597  	var validi bool
  1598  	for {
  1599  		if i, validi, err = ait.NextValidity(); err != nil {
  1600  			err = handleNoOp(err)
  1601  			break
  1602  		}
  1603  		if validi {
  1604  			if b > a[i] {
  1605  				a[i] = b
  1606  			}
  1607  		}
  1608  	}
  1609  	return
  1610  }
  1611  
  1612  func VecMaxIterU8(a, b []uint8, ait, bit Iterator) (err error) {
  1613  	var i, j int
  1614  	var validi, validj bool
  1615  	for {
  1616  		if i, validi, err = ait.NextValidity(); err != nil {
  1617  			err = handleNoOp(err)
  1618  			break
  1619  		}
  1620  		if j, validj, err = bit.NextValidity(); err != nil {
  1621  			err = handleNoOp(err)
  1622  			break
  1623  		}
  1624  		if validi && validj {
  1625  			if b[j] > a[i] {
  1626  				a[i] = b[j]
  1627  			}
  1628  		}
  1629  	}
  1630  	return
  1631  }
  1632  
  1633  func MinIterSVU16(a uint16, b []uint16, bit Iterator) (err error) {
  1634  	var i int
  1635  	var validi bool
  1636  	for {
  1637  		if i, validi, err = bit.NextValidity(); err != nil {
  1638  			err = handleNoOp(err)
  1639  			break
  1640  		}
  1641  		if validi {
  1642  			if a < b[i] {
  1643  				b[i] = a
  1644  			}
  1645  		}
  1646  	}
  1647  	return
  1648  }
  1649  
  1650  func MinIterVSU16(a []uint16, b uint16, ait Iterator) (err error) {
  1651  	var i int
  1652  	var validi bool
  1653  	for {
  1654  		if i, validi, err = ait.NextValidity(); err != nil {
  1655  			err = handleNoOp(err)
  1656  			break
  1657  		}
  1658  		if validi {
  1659  			if b < a[i] {
  1660  				a[i] = b
  1661  			}
  1662  		}
  1663  	}
  1664  	return
  1665  }
  1666  
  1667  func VecMinIterU16(a, b []uint16, ait, bit Iterator) (err error) {
  1668  	var i, j int
  1669  	var validi, validj bool
  1670  	for {
  1671  		if i, validi, err = ait.NextValidity(); err != nil {
  1672  			err = handleNoOp(err)
  1673  			break
  1674  		}
  1675  		if j, validj, err = bit.NextValidity(); err != nil {
  1676  			err = handleNoOp(err)
  1677  			break
  1678  		}
  1679  		if validi && validj {
  1680  			if b[j] < a[i] {
  1681  				a[i] = b[j]
  1682  			}
  1683  		}
  1684  	}
  1685  	return
  1686  }
  1687  
  1688  func MaxIterSVU16(a uint16, b []uint16, bit Iterator) (err error) {
  1689  	var i int
  1690  	var validi bool
  1691  	for {
  1692  		if i, validi, err = bit.NextValidity(); err != nil {
  1693  			err = handleNoOp(err)
  1694  			break
  1695  		}
  1696  		if validi {
  1697  			if a > b[i] {
  1698  				b[i] = a
  1699  			}
  1700  		}
  1701  	}
  1702  	return
  1703  }
  1704  
  1705  func MaxIterVSU16(a []uint16, b uint16, ait Iterator) (err error) {
  1706  	var i int
  1707  	var validi bool
  1708  	for {
  1709  		if i, validi, err = ait.NextValidity(); err != nil {
  1710  			err = handleNoOp(err)
  1711  			break
  1712  		}
  1713  		if validi {
  1714  			if b > a[i] {
  1715  				a[i] = b
  1716  			}
  1717  		}
  1718  	}
  1719  	return
  1720  }
  1721  
  1722  func VecMaxIterU16(a, b []uint16, ait, bit Iterator) (err error) {
  1723  	var i, j int
  1724  	var validi, validj bool
  1725  	for {
  1726  		if i, validi, err = ait.NextValidity(); err != nil {
  1727  			err = handleNoOp(err)
  1728  			break
  1729  		}
  1730  		if j, validj, err = bit.NextValidity(); err != nil {
  1731  			err = handleNoOp(err)
  1732  			break
  1733  		}
  1734  		if validi && validj {
  1735  			if b[j] > a[i] {
  1736  				a[i] = b[j]
  1737  			}
  1738  		}
  1739  	}
  1740  	return
  1741  }
  1742  
  1743  func MinIterSVU32(a uint32, b []uint32, bit Iterator) (err error) {
  1744  	var i int
  1745  	var validi bool
  1746  	for {
  1747  		if i, validi, err = bit.NextValidity(); err != nil {
  1748  			err = handleNoOp(err)
  1749  			break
  1750  		}
  1751  		if validi {
  1752  			if a < b[i] {
  1753  				b[i] = a
  1754  			}
  1755  		}
  1756  	}
  1757  	return
  1758  }
  1759  
  1760  func MinIterVSU32(a []uint32, b uint32, ait Iterator) (err error) {
  1761  	var i int
  1762  	var validi bool
  1763  	for {
  1764  		if i, validi, err = ait.NextValidity(); err != nil {
  1765  			err = handleNoOp(err)
  1766  			break
  1767  		}
  1768  		if validi {
  1769  			if b < a[i] {
  1770  				a[i] = b
  1771  			}
  1772  		}
  1773  	}
  1774  	return
  1775  }
  1776  
  1777  func VecMinIterU32(a, b []uint32, ait, bit Iterator) (err error) {
  1778  	var i, j int
  1779  	var validi, validj bool
  1780  	for {
  1781  		if i, validi, err = ait.NextValidity(); err != nil {
  1782  			err = handleNoOp(err)
  1783  			break
  1784  		}
  1785  		if j, validj, err = bit.NextValidity(); err != nil {
  1786  			err = handleNoOp(err)
  1787  			break
  1788  		}
  1789  		if validi && validj {
  1790  			if b[j] < a[i] {
  1791  				a[i] = b[j]
  1792  			}
  1793  		}
  1794  	}
  1795  	return
  1796  }
  1797  
  1798  func MaxIterSVU32(a uint32, b []uint32, bit Iterator) (err error) {
  1799  	var i int
  1800  	var validi bool
  1801  	for {
  1802  		if i, validi, err = bit.NextValidity(); err != nil {
  1803  			err = handleNoOp(err)
  1804  			break
  1805  		}
  1806  		if validi {
  1807  			if a > b[i] {
  1808  				b[i] = a
  1809  			}
  1810  		}
  1811  	}
  1812  	return
  1813  }
  1814  
  1815  func MaxIterVSU32(a []uint32, b uint32, ait Iterator) (err error) {
  1816  	var i int
  1817  	var validi bool
  1818  	for {
  1819  		if i, validi, err = ait.NextValidity(); err != nil {
  1820  			err = handleNoOp(err)
  1821  			break
  1822  		}
  1823  		if validi {
  1824  			if b > a[i] {
  1825  				a[i] = b
  1826  			}
  1827  		}
  1828  	}
  1829  	return
  1830  }
  1831  
  1832  func VecMaxIterU32(a, b []uint32, ait, bit Iterator) (err error) {
  1833  	var i, j int
  1834  	var validi, validj bool
  1835  	for {
  1836  		if i, validi, err = ait.NextValidity(); err != nil {
  1837  			err = handleNoOp(err)
  1838  			break
  1839  		}
  1840  		if j, validj, err = bit.NextValidity(); err != nil {
  1841  			err = handleNoOp(err)
  1842  			break
  1843  		}
  1844  		if validi && validj {
  1845  			if b[j] > a[i] {
  1846  				a[i] = b[j]
  1847  			}
  1848  		}
  1849  	}
  1850  	return
  1851  }
  1852  
  1853  func MinIterSVU64(a uint64, b []uint64, bit Iterator) (err error) {
  1854  	var i int
  1855  	var validi bool
  1856  	for {
  1857  		if i, validi, err = bit.NextValidity(); err != nil {
  1858  			err = handleNoOp(err)
  1859  			break
  1860  		}
  1861  		if validi {
  1862  			if a < b[i] {
  1863  				b[i] = a
  1864  			}
  1865  		}
  1866  	}
  1867  	return
  1868  }
  1869  
  1870  func MinIterVSU64(a []uint64, b uint64, ait Iterator) (err error) {
  1871  	var i int
  1872  	var validi bool
  1873  	for {
  1874  		if i, validi, err = ait.NextValidity(); err != nil {
  1875  			err = handleNoOp(err)
  1876  			break
  1877  		}
  1878  		if validi {
  1879  			if b < a[i] {
  1880  				a[i] = b
  1881  			}
  1882  		}
  1883  	}
  1884  	return
  1885  }
  1886  
  1887  func VecMinIterU64(a, b []uint64, ait, bit Iterator) (err error) {
  1888  	var i, j int
  1889  	var validi, validj bool
  1890  	for {
  1891  		if i, validi, err = ait.NextValidity(); err != nil {
  1892  			err = handleNoOp(err)
  1893  			break
  1894  		}
  1895  		if j, validj, err = bit.NextValidity(); err != nil {
  1896  			err = handleNoOp(err)
  1897  			break
  1898  		}
  1899  		if validi && validj {
  1900  			if b[j] < a[i] {
  1901  				a[i] = b[j]
  1902  			}
  1903  		}
  1904  	}
  1905  	return
  1906  }
  1907  
  1908  func MaxIterSVU64(a uint64, b []uint64, bit Iterator) (err error) {
  1909  	var i int
  1910  	var validi bool
  1911  	for {
  1912  		if i, validi, err = bit.NextValidity(); err != nil {
  1913  			err = handleNoOp(err)
  1914  			break
  1915  		}
  1916  		if validi {
  1917  			if a > b[i] {
  1918  				b[i] = a
  1919  			}
  1920  		}
  1921  	}
  1922  	return
  1923  }
  1924  
  1925  func MaxIterVSU64(a []uint64, b uint64, ait Iterator) (err error) {
  1926  	var i int
  1927  	var validi bool
  1928  	for {
  1929  		if i, validi, err = ait.NextValidity(); err != nil {
  1930  			err = handleNoOp(err)
  1931  			break
  1932  		}
  1933  		if validi {
  1934  			if b > a[i] {
  1935  				a[i] = b
  1936  			}
  1937  		}
  1938  	}
  1939  	return
  1940  }
  1941  
  1942  func VecMaxIterU64(a, b []uint64, ait, bit Iterator) (err error) {
  1943  	var i, j int
  1944  	var validi, validj bool
  1945  	for {
  1946  		if i, validi, err = ait.NextValidity(); err != nil {
  1947  			err = handleNoOp(err)
  1948  			break
  1949  		}
  1950  		if j, validj, err = bit.NextValidity(); err != nil {
  1951  			err = handleNoOp(err)
  1952  			break
  1953  		}
  1954  		if validi && validj {
  1955  			if b[j] > a[i] {
  1956  				a[i] = b[j]
  1957  			}
  1958  		}
  1959  	}
  1960  	return
  1961  }
  1962  
  1963  func MinIterSVF32(a float32, b []float32, bit Iterator) (err error) {
  1964  	var i int
  1965  	var validi bool
  1966  	for {
  1967  		if i, validi, err = bit.NextValidity(); err != nil {
  1968  			err = handleNoOp(err)
  1969  			break
  1970  		}
  1971  		if validi {
  1972  			if a < b[i] {
  1973  				b[i] = a
  1974  			}
  1975  		}
  1976  	}
  1977  	return
  1978  }
  1979  
  1980  func MinIterVSF32(a []float32, b float32, ait Iterator) (err error) {
  1981  	var i int
  1982  	var validi bool
  1983  	for {
  1984  		if i, validi, err = ait.NextValidity(); err != nil {
  1985  			err = handleNoOp(err)
  1986  			break
  1987  		}
  1988  		if validi {
  1989  			if b < a[i] {
  1990  				a[i] = b
  1991  			}
  1992  		}
  1993  	}
  1994  	return
  1995  }
  1996  
  1997  func VecMinIterF32(a, b []float32, ait, bit Iterator) (err error) {
  1998  	var i, j int
  1999  	var validi, validj bool
  2000  	for {
  2001  		if i, validi, err = ait.NextValidity(); err != nil {
  2002  			err = handleNoOp(err)
  2003  			break
  2004  		}
  2005  		if j, validj, err = bit.NextValidity(); err != nil {
  2006  			err = handleNoOp(err)
  2007  			break
  2008  		}
  2009  		if validi && validj {
  2010  			if b[j] < a[i] {
  2011  				a[i] = b[j]
  2012  			}
  2013  		}
  2014  	}
  2015  	return
  2016  }
  2017  
  2018  func MaxIterSVF32(a float32, b []float32, bit Iterator) (err error) {
  2019  	var i int
  2020  	var validi bool
  2021  	for {
  2022  		if i, validi, err = bit.NextValidity(); err != nil {
  2023  			err = handleNoOp(err)
  2024  			break
  2025  		}
  2026  		if validi {
  2027  			if a > b[i] {
  2028  				b[i] = a
  2029  			}
  2030  		}
  2031  	}
  2032  	return
  2033  }
  2034  
  2035  func MaxIterVSF32(a []float32, b float32, ait Iterator) (err error) {
  2036  	var i int
  2037  	var validi bool
  2038  	for {
  2039  		if i, validi, err = ait.NextValidity(); err != nil {
  2040  			err = handleNoOp(err)
  2041  			break
  2042  		}
  2043  		if validi {
  2044  			if b > a[i] {
  2045  				a[i] = b
  2046  			}
  2047  		}
  2048  	}
  2049  	return
  2050  }
  2051  
  2052  func VecMaxIterF32(a, b []float32, ait, bit Iterator) (err error) {
  2053  	var i, j int
  2054  	var validi, validj bool
  2055  	for {
  2056  		if i, validi, err = ait.NextValidity(); err != nil {
  2057  			err = handleNoOp(err)
  2058  			break
  2059  		}
  2060  		if j, validj, err = bit.NextValidity(); err != nil {
  2061  			err = handleNoOp(err)
  2062  			break
  2063  		}
  2064  		if validi && validj {
  2065  			if b[j] > a[i] {
  2066  				a[i] = b[j]
  2067  			}
  2068  		}
  2069  	}
  2070  	return
  2071  }
  2072  
  2073  func MinIterSVF64(a float64, b []float64, bit Iterator) (err error) {
  2074  	var i int
  2075  	var validi bool
  2076  	for {
  2077  		if i, validi, err = bit.NextValidity(); err != nil {
  2078  			err = handleNoOp(err)
  2079  			break
  2080  		}
  2081  		if validi {
  2082  			if a < b[i] {
  2083  				b[i] = a
  2084  			}
  2085  		}
  2086  	}
  2087  	return
  2088  }
  2089  
  2090  func MinIterVSF64(a []float64, b float64, ait Iterator) (err error) {
  2091  	var i int
  2092  	var validi bool
  2093  	for {
  2094  		if i, validi, err = ait.NextValidity(); err != nil {
  2095  			err = handleNoOp(err)
  2096  			break
  2097  		}
  2098  		if validi {
  2099  			if b < a[i] {
  2100  				a[i] = b
  2101  			}
  2102  		}
  2103  	}
  2104  	return
  2105  }
  2106  
  2107  func VecMinIterF64(a, b []float64, ait, bit Iterator) (err error) {
  2108  	var i, j int
  2109  	var validi, validj bool
  2110  	for {
  2111  		if i, validi, err = ait.NextValidity(); err != nil {
  2112  			err = handleNoOp(err)
  2113  			break
  2114  		}
  2115  		if j, validj, err = bit.NextValidity(); err != nil {
  2116  			err = handleNoOp(err)
  2117  			break
  2118  		}
  2119  		if validi && validj {
  2120  			if b[j] < a[i] {
  2121  				a[i] = b[j]
  2122  			}
  2123  		}
  2124  	}
  2125  	return
  2126  }
  2127  
  2128  func MaxIterSVF64(a float64, b []float64, bit Iterator) (err error) {
  2129  	var i int
  2130  	var validi bool
  2131  	for {
  2132  		if i, validi, err = bit.NextValidity(); err != nil {
  2133  			err = handleNoOp(err)
  2134  			break
  2135  		}
  2136  		if validi {
  2137  			if a > b[i] {
  2138  				b[i] = a
  2139  			}
  2140  		}
  2141  	}
  2142  	return
  2143  }
  2144  
  2145  func MaxIterVSF64(a []float64, b float64, ait Iterator) (err error) {
  2146  	var i int
  2147  	var validi bool
  2148  	for {
  2149  		if i, validi, err = ait.NextValidity(); err != nil {
  2150  			err = handleNoOp(err)
  2151  			break
  2152  		}
  2153  		if validi {
  2154  			if b > a[i] {
  2155  				a[i] = b
  2156  			}
  2157  		}
  2158  	}
  2159  	return
  2160  }
  2161  
  2162  func VecMaxIterF64(a, b []float64, ait, bit Iterator) (err error) {
  2163  	var i, j int
  2164  	var validi, validj bool
  2165  	for {
  2166  		if i, validi, err = ait.NextValidity(); err != nil {
  2167  			err = handleNoOp(err)
  2168  			break
  2169  		}
  2170  		if j, validj, err = bit.NextValidity(); err != nil {
  2171  			err = handleNoOp(err)
  2172  			break
  2173  		}
  2174  		if validi && validj {
  2175  			if b[j] > a[i] {
  2176  				a[i] = b[j]
  2177  			}
  2178  		}
  2179  	}
  2180  	return
  2181  }
  2182  
  2183  func MinIterSVStr(a string, b []string, bit Iterator) (err error) {
  2184  	var i int
  2185  	var validi bool
  2186  	for {
  2187  		if i, validi, err = bit.NextValidity(); err != nil {
  2188  			err = handleNoOp(err)
  2189  			break
  2190  		}
  2191  		if validi {
  2192  			if a < b[i] {
  2193  				b[i] = a
  2194  			}
  2195  		}
  2196  	}
  2197  	return
  2198  }
  2199  
  2200  func MinIterVSStr(a []string, b string, ait Iterator) (err error) {
  2201  	var i int
  2202  	var validi bool
  2203  	for {
  2204  		if i, validi, err = ait.NextValidity(); err != nil {
  2205  			err = handleNoOp(err)
  2206  			break
  2207  		}
  2208  		if validi {
  2209  			if b < a[i] {
  2210  				a[i] = b
  2211  			}
  2212  		}
  2213  	}
  2214  	return
  2215  }
  2216  
  2217  func VecMinIterStr(a, b []string, ait, bit Iterator) (err error) {
  2218  	var i, j int
  2219  	var validi, validj bool
  2220  	for {
  2221  		if i, validi, err = ait.NextValidity(); err != nil {
  2222  			err = handleNoOp(err)
  2223  			break
  2224  		}
  2225  		if j, validj, err = bit.NextValidity(); err != nil {
  2226  			err = handleNoOp(err)
  2227  			break
  2228  		}
  2229  		if validi && validj {
  2230  			if b[j] < a[i] {
  2231  				a[i] = b[j]
  2232  			}
  2233  		}
  2234  	}
  2235  	return
  2236  }
  2237  
  2238  func MaxIterSVStr(a string, b []string, bit Iterator) (err error) {
  2239  	var i int
  2240  	var validi bool
  2241  	for {
  2242  		if i, validi, err = bit.NextValidity(); err != nil {
  2243  			err = handleNoOp(err)
  2244  			break
  2245  		}
  2246  		if validi {
  2247  			if a > b[i] {
  2248  				b[i] = a
  2249  			}
  2250  		}
  2251  	}
  2252  	return
  2253  }
  2254  
  2255  func MaxIterVSStr(a []string, b string, ait Iterator) (err error) {
  2256  	var i int
  2257  	var validi bool
  2258  	for {
  2259  		if i, validi, err = ait.NextValidity(); err != nil {
  2260  			err = handleNoOp(err)
  2261  			break
  2262  		}
  2263  		if validi {
  2264  			if b > a[i] {
  2265  				a[i] = b
  2266  			}
  2267  		}
  2268  	}
  2269  	return
  2270  }
  2271  
  2272  func VecMaxIterStr(a, b []string, ait, bit Iterator) (err error) {
  2273  	var i, j int
  2274  	var validi, validj bool
  2275  	for {
  2276  		if i, validi, err = ait.NextValidity(); err != nil {
  2277  			err = handleNoOp(err)
  2278  			break
  2279  		}
  2280  		if j, validj, err = bit.NextValidity(); err != nil {
  2281  			err = handleNoOp(err)
  2282  			break
  2283  		}
  2284  		if validi && validj {
  2285  			if b[j] > a[i] {
  2286  				a[i] = b[j]
  2287  			}
  2288  		}
  2289  	}
  2290  	return
  2291  }