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

     1  // Code generated by genlib2. DO NOT EDIT.
     2  
     3  package execution
     4  
     5  import (
     6  	"math"
     7  
     8  	"github.com/chewxy/math32"
     9  )
    10  
    11  func ArgmaxI(a []int) int {
    12  	var set bool
    13  	var f int
    14  	var max int
    15  	for i := range a {
    16  		v := a[i]
    17  		if !set {
    18  			f = v
    19  			max = i
    20  			set = true
    21  			continue
    22  		}
    23  		if v > f {
    24  			max = i
    25  			f = v
    26  		}
    27  	}
    28  	return max
    29  }
    30  
    31  func ArgmaxI8(a []int8) int {
    32  	var set bool
    33  	var f int8
    34  	var max int
    35  	for i := range a {
    36  		v := a[i]
    37  		if !set {
    38  			f = v
    39  			max = i
    40  			set = true
    41  			continue
    42  		}
    43  		if v > f {
    44  			max = i
    45  			f = v
    46  		}
    47  	}
    48  	return max
    49  }
    50  
    51  func ArgmaxI16(a []int16) int {
    52  	var set bool
    53  	var f int16
    54  	var max int
    55  	for i := range a {
    56  		v := a[i]
    57  		if !set {
    58  			f = v
    59  			max = i
    60  			set = true
    61  			continue
    62  		}
    63  		if v > f {
    64  			max = i
    65  			f = v
    66  		}
    67  	}
    68  	return max
    69  }
    70  
    71  func ArgmaxI32(a []int32) int {
    72  	var set bool
    73  	var f int32
    74  	var max int
    75  	for i := range a {
    76  		v := a[i]
    77  		if !set {
    78  			f = v
    79  			max = i
    80  			set = true
    81  			continue
    82  		}
    83  		if v > f {
    84  			max = i
    85  			f = v
    86  		}
    87  	}
    88  	return max
    89  }
    90  
    91  func ArgmaxI64(a []int64) int {
    92  	var set bool
    93  	var f int64
    94  	var max int
    95  	for i := range a {
    96  		v := a[i]
    97  		if !set {
    98  			f = v
    99  			max = i
   100  			set = true
   101  			continue
   102  		}
   103  		if v > f {
   104  			max = i
   105  			f = v
   106  		}
   107  	}
   108  	return max
   109  }
   110  
   111  func ArgmaxU(a []uint) int {
   112  	var set bool
   113  	var f uint
   114  	var max int
   115  	for i := range a {
   116  		v := a[i]
   117  		if !set {
   118  			f = v
   119  			max = i
   120  			set = true
   121  			continue
   122  		}
   123  		if v > f {
   124  			max = i
   125  			f = v
   126  		}
   127  	}
   128  	return max
   129  }
   130  
   131  func ArgmaxU8(a []uint8) int {
   132  	var set bool
   133  	var f uint8
   134  	var max int
   135  	for i := range a {
   136  		v := a[i]
   137  		if !set {
   138  			f = v
   139  			max = i
   140  			set = true
   141  			continue
   142  		}
   143  		if v > f {
   144  			max = i
   145  			f = v
   146  		}
   147  	}
   148  	return max
   149  }
   150  
   151  func ArgmaxU16(a []uint16) int {
   152  	var set bool
   153  	var f uint16
   154  	var max int
   155  	for i := range a {
   156  		v := a[i]
   157  		if !set {
   158  			f = v
   159  			max = i
   160  			set = true
   161  			continue
   162  		}
   163  		if v > f {
   164  			max = i
   165  			f = v
   166  		}
   167  	}
   168  	return max
   169  }
   170  
   171  func ArgmaxU32(a []uint32) int {
   172  	var set bool
   173  	var f uint32
   174  	var max int
   175  	for i := range a {
   176  		v := a[i]
   177  		if !set {
   178  			f = v
   179  			max = i
   180  			set = true
   181  			continue
   182  		}
   183  		if v > f {
   184  			max = i
   185  			f = v
   186  		}
   187  	}
   188  	return max
   189  }
   190  
   191  func ArgmaxU64(a []uint64) int {
   192  	var set bool
   193  	var f uint64
   194  	var max int
   195  	for i := range a {
   196  		v := a[i]
   197  		if !set {
   198  			f = v
   199  			max = i
   200  			set = true
   201  			continue
   202  		}
   203  		if v > f {
   204  			max = i
   205  			f = v
   206  		}
   207  	}
   208  	return max
   209  }
   210  
   211  func ArgmaxF32(a []float32) int {
   212  	var set bool
   213  	var f float32
   214  	var max int
   215  	for i := range a {
   216  		v := a[i]
   217  		if !set {
   218  			f = v
   219  			max = i
   220  			set = true
   221  			continue
   222  		}
   223  		if math32.IsNaN(v) || math32.IsInf(v, 1) {
   224  			max = i
   225  			return max
   226  		}
   227  		if v > f {
   228  			max = i
   229  			f = v
   230  		}
   231  	}
   232  	return max
   233  }
   234  
   235  func ArgmaxF64(a []float64) int {
   236  	var set bool
   237  	var f float64
   238  	var max int
   239  	for i := range a {
   240  		v := a[i]
   241  		if !set {
   242  			f = v
   243  			max = i
   244  			set = true
   245  			continue
   246  		}
   247  		if math.IsNaN(v) || math.IsInf(v, 1) {
   248  			max = i
   249  			return max
   250  		}
   251  		if v > f {
   252  			max = i
   253  			f = v
   254  		}
   255  	}
   256  	return max
   257  }
   258  
   259  func ArgmaxStr(a []string) int {
   260  	var set bool
   261  	var f string
   262  	var max int
   263  	for i := range a {
   264  		v := a[i]
   265  		if !set {
   266  			f = v
   267  			max = i
   268  			set = true
   269  			continue
   270  		}
   271  		if v > f {
   272  			max = i
   273  			f = v
   274  		}
   275  	}
   276  	return max
   277  }
   278  
   279  func ArgmaxMaskedI(a []int, mask []bool) int {
   280  	var set bool
   281  	var f int
   282  	var max int
   283  	for i := range a {
   284  		if mask[i] {
   285  			continue
   286  		}
   287  		v := a[i]
   288  		if !set {
   289  			f = v
   290  			max = i
   291  			set = true
   292  			continue
   293  		}
   294  		if v > f {
   295  			max = i
   296  			f = v
   297  		}
   298  	}
   299  	return max
   300  }
   301  
   302  func ArgmaxMaskedI8(a []int8, mask []bool) int {
   303  	var set bool
   304  	var f int8
   305  	var max int
   306  	for i := range a {
   307  		if mask[i] {
   308  			continue
   309  		}
   310  		v := a[i]
   311  		if !set {
   312  			f = v
   313  			max = i
   314  			set = true
   315  			continue
   316  		}
   317  		if v > f {
   318  			max = i
   319  			f = v
   320  		}
   321  	}
   322  	return max
   323  }
   324  
   325  func ArgmaxMaskedI16(a []int16, mask []bool) int {
   326  	var set bool
   327  	var f int16
   328  	var max int
   329  	for i := range a {
   330  		if mask[i] {
   331  			continue
   332  		}
   333  		v := a[i]
   334  		if !set {
   335  			f = v
   336  			max = i
   337  			set = true
   338  			continue
   339  		}
   340  		if v > f {
   341  			max = i
   342  			f = v
   343  		}
   344  	}
   345  	return max
   346  }
   347  
   348  func ArgmaxMaskedI32(a []int32, mask []bool) int {
   349  	var set bool
   350  	var f int32
   351  	var max int
   352  	for i := range a {
   353  		if mask[i] {
   354  			continue
   355  		}
   356  		v := a[i]
   357  		if !set {
   358  			f = v
   359  			max = i
   360  			set = true
   361  			continue
   362  		}
   363  		if v > f {
   364  			max = i
   365  			f = v
   366  		}
   367  	}
   368  	return max
   369  }
   370  
   371  func ArgmaxMaskedI64(a []int64, mask []bool) int {
   372  	var set bool
   373  	var f int64
   374  	var max int
   375  	for i := range a {
   376  		if mask[i] {
   377  			continue
   378  		}
   379  		v := a[i]
   380  		if !set {
   381  			f = v
   382  			max = i
   383  			set = true
   384  			continue
   385  		}
   386  		if v > f {
   387  			max = i
   388  			f = v
   389  		}
   390  	}
   391  	return max
   392  }
   393  
   394  func ArgmaxMaskedU(a []uint, mask []bool) int {
   395  	var set bool
   396  	var f uint
   397  	var max int
   398  	for i := range a {
   399  		if mask[i] {
   400  			continue
   401  		}
   402  		v := a[i]
   403  		if !set {
   404  			f = v
   405  			max = i
   406  			set = true
   407  			continue
   408  		}
   409  		if v > f {
   410  			max = i
   411  			f = v
   412  		}
   413  	}
   414  	return max
   415  }
   416  
   417  func ArgmaxMaskedU8(a []uint8, mask []bool) int {
   418  	var set bool
   419  	var f uint8
   420  	var max int
   421  	for i := range a {
   422  		if mask[i] {
   423  			continue
   424  		}
   425  		v := a[i]
   426  		if !set {
   427  			f = v
   428  			max = i
   429  			set = true
   430  			continue
   431  		}
   432  		if v > f {
   433  			max = i
   434  			f = v
   435  		}
   436  	}
   437  	return max
   438  }
   439  
   440  func ArgmaxMaskedU16(a []uint16, mask []bool) int {
   441  	var set bool
   442  	var f uint16
   443  	var max int
   444  	for i := range a {
   445  		if mask[i] {
   446  			continue
   447  		}
   448  		v := a[i]
   449  		if !set {
   450  			f = v
   451  			max = i
   452  			set = true
   453  			continue
   454  		}
   455  		if v > f {
   456  			max = i
   457  			f = v
   458  		}
   459  	}
   460  	return max
   461  }
   462  
   463  func ArgmaxMaskedU32(a []uint32, mask []bool) int {
   464  	var set bool
   465  	var f uint32
   466  	var max int
   467  	for i := range a {
   468  		if mask[i] {
   469  			continue
   470  		}
   471  		v := a[i]
   472  		if !set {
   473  			f = v
   474  			max = i
   475  			set = true
   476  			continue
   477  		}
   478  		if v > f {
   479  			max = i
   480  			f = v
   481  		}
   482  	}
   483  	return max
   484  }
   485  
   486  func ArgmaxMaskedU64(a []uint64, mask []bool) int {
   487  	var set bool
   488  	var f uint64
   489  	var max int
   490  	for i := range a {
   491  		if mask[i] {
   492  			continue
   493  		}
   494  		v := a[i]
   495  		if !set {
   496  			f = v
   497  			max = i
   498  			set = true
   499  			continue
   500  		}
   501  		if v > f {
   502  			max = i
   503  			f = v
   504  		}
   505  	}
   506  	return max
   507  }
   508  
   509  func ArgmaxMaskedF32(a []float32, mask []bool) int {
   510  	var set bool
   511  	var f float32
   512  	var max int
   513  	for i := range a {
   514  		if mask[i] {
   515  			continue
   516  		}
   517  		v := a[i]
   518  		if !set {
   519  			f = v
   520  			max = i
   521  			set = true
   522  			continue
   523  		}
   524  		if math32.IsNaN(v) || math32.IsInf(v, 1) {
   525  			max = i
   526  			return max
   527  		}
   528  		if v > f {
   529  			max = i
   530  			f = v
   531  		}
   532  	}
   533  	return max
   534  }
   535  
   536  func ArgmaxMaskedF64(a []float64, mask []bool) int {
   537  	var set bool
   538  	var f float64
   539  	var max int
   540  	for i := range a {
   541  		if mask[i] {
   542  			continue
   543  		}
   544  		v := a[i]
   545  		if !set {
   546  			f = v
   547  			max = i
   548  			set = true
   549  			continue
   550  		}
   551  		if math.IsNaN(v) || math.IsInf(v, 1) {
   552  			max = i
   553  			return max
   554  		}
   555  		if v > f {
   556  			max = i
   557  			f = v
   558  		}
   559  	}
   560  	return max
   561  }
   562  
   563  func ArgmaxMaskedStr(a []string, mask []bool) int {
   564  	var set bool
   565  	var f string
   566  	var max int
   567  	for i := range a {
   568  		if mask[i] {
   569  			continue
   570  		}
   571  		v := a[i]
   572  		if !set {
   573  			f = v
   574  			max = i
   575  			set = true
   576  			continue
   577  		}
   578  		if v > f {
   579  			max = i
   580  			f = v
   581  		}
   582  	}
   583  	return max
   584  }
   585  
   586  func ArgminI(a []int) int {
   587  	var set bool
   588  	var f int
   589  	var min int
   590  	for i := range a {
   591  		v := a[i]
   592  		if !set {
   593  			f = v
   594  			min = i
   595  			set = true
   596  			continue
   597  		}
   598  		if v < f {
   599  			min = i
   600  			f = v
   601  		}
   602  	}
   603  	return min
   604  }
   605  
   606  func ArgminI8(a []int8) int {
   607  	var set bool
   608  	var f int8
   609  	var min int
   610  	for i := range a {
   611  		v := a[i]
   612  		if !set {
   613  			f = v
   614  			min = i
   615  			set = true
   616  			continue
   617  		}
   618  		if v < f {
   619  			min = i
   620  			f = v
   621  		}
   622  	}
   623  	return min
   624  }
   625  
   626  func ArgminI16(a []int16) int {
   627  	var set bool
   628  	var f int16
   629  	var min int
   630  	for i := range a {
   631  		v := a[i]
   632  		if !set {
   633  			f = v
   634  			min = i
   635  			set = true
   636  			continue
   637  		}
   638  		if v < f {
   639  			min = i
   640  			f = v
   641  		}
   642  	}
   643  	return min
   644  }
   645  
   646  func ArgminI32(a []int32) int {
   647  	var set bool
   648  	var f int32
   649  	var min int
   650  	for i := range a {
   651  		v := a[i]
   652  		if !set {
   653  			f = v
   654  			min = i
   655  			set = true
   656  			continue
   657  		}
   658  		if v < f {
   659  			min = i
   660  			f = v
   661  		}
   662  	}
   663  	return min
   664  }
   665  
   666  func ArgminI64(a []int64) int {
   667  	var set bool
   668  	var f int64
   669  	var min int
   670  	for i := range a {
   671  		v := a[i]
   672  		if !set {
   673  			f = v
   674  			min = i
   675  			set = true
   676  			continue
   677  		}
   678  		if v < f {
   679  			min = i
   680  			f = v
   681  		}
   682  	}
   683  	return min
   684  }
   685  
   686  func ArgminU(a []uint) int {
   687  	var set bool
   688  	var f uint
   689  	var min int
   690  	for i := range a {
   691  		v := a[i]
   692  		if !set {
   693  			f = v
   694  			min = i
   695  			set = true
   696  			continue
   697  		}
   698  		if v < f {
   699  			min = i
   700  			f = v
   701  		}
   702  	}
   703  	return min
   704  }
   705  
   706  func ArgminU8(a []uint8) int {
   707  	var set bool
   708  	var f uint8
   709  	var min int
   710  	for i := range a {
   711  		v := a[i]
   712  		if !set {
   713  			f = v
   714  			min = i
   715  			set = true
   716  			continue
   717  		}
   718  		if v < f {
   719  			min = i
   720  			f = v
   721  		}
   722  	}
   723  	return min
   724  }
   725  
   726  func ArgminU16(a []uint16) int {
   727  	var set bool
   728  	var f uint16
   729  	var min int
   730  	for i := range a {
   731  		v := a[i]
   732  		if !set {
   733  			f = v
   734  			min = i
   735  			set = true
   736  			continue
   737  		}
   738  		if v < f {
   739  			min = i
   740  			f = v
   741  		}
   742  	}
   743  	return min
   744  }
   745  
   746  func ArgminU32(a []uint32) int {
   747  	var set bool
   748  	var f uint32
   749  	var min int
   750  	for i := range a {
   751  		v := a[i]
   752  		if !set {
   753  			f = v
   754  			min = i
   755  			set = true
   756  			continue
   757  		}
   758  		if v < f {
   759  			min = i
   760  			f = v
   761  		}
   762  	}
   763  	return min
   764  }
   765  
   766  func ArgminU64(a []uint64) int {
   767  	var set bool
   768  	var f uint64
   769  	var min int
   770  	for i := range a {
   771  		v := a[i]
   772  		if !set {
   773  			f = v
   774  			min = i
   775  			set = true
   776  			continue
   777  		}
   778  		if v < f {
   779  			min = i
   780  			f = v
   781  		}
   782  	}
   783  	return min
   784  }
   785  
   786  func ArgminF32(a []float32) int {
   787  	var set bool
   788  	var f float32
   789  	var min int
   790  	for i := range a {
   791  		v := a[i]
   792  		if !set {
   793  			f = v
   794  			min = i
   795  			set = true
   796  			continue
   797  		}
   798  		if math32.IsNaN(v) || math32.IsInf(v, -1) {
   799  			min = i
   800  			return min
   801  		}
   802  		if v < f {
   803  			min = i
   804  			f = v
   805  		}
   806  	}
   807  	return min
   808  }
   809  
   810  func ArgminF64(a []float64) int {
   811  	var set bool
   812  	var f float64
   813  	var min int
   814  	for i := range a {
   815  		v := a[i]
   816  		if !set {
   817  			f = v
   818  			min = i
   819  			set = true
   820  			continue
   821  		}
   822  		if math.IsNaN(v) || math.IsInf(v, -1) {
   823  			min = i
   824  			return min
   825  		}
   826  		if v < f {
   827  			min = i
   828  			f = v
   829  		}
   830  	}
   831  	return min
   832  }
   833  
   834  func ArgminStr(a []string) int {
   835  	var set bool
   836  	var f string
   837  	var min int
   838  	for i := range a {
   839  		v := a[i]
   840  		if !set {
   841  			f = v
   842  			min = i
   843  			set = true
   844  			continue
   845  		}
   846  		if v < f {
   847  			min = i
   848  			f = v
   849  		}
   850  	}
   851  	return min
   852  }
   853  
   854  func ArgminMaskedI(a []int, mask []bool) int {
   855  	var set bool
   856  	var f int
   857  	var min int
   858  	for i := range a {
   859  		if mask[i] {
   860  			continue
   861  		}
   862  		v := a[i]
   863  		if !set {
   864  			f = v
   865  			min = i
   866  			set = true
   867  			continue
   868  		}
   869  		if v < f {
   870  			min = i
   871  			f = v
   872  		}
   873  	}
   874  	return min
   875  }
   876  
   877  func ArgminMaskedI8(a []int8, mask []bool) int {
   878  	var set bool
   879  	var f int8
   880  	var min int
   881  	for i := range a {
   882  		if mask[i] {
   883  			continue
   884  		}
   885  		v := a[i]
   886  		if !set {
   887  			f = v
   888  			min = i
   889  			set = true
   890  			continue
   891  		}
   892  		if v < f {
   893  			min = i
   894  			f = v
   895  		}
   896  	}
   897  	return min
   898  }
   899  
   900  func ArgminMaskedI16(a []int16, mask []bool) int {
   901  	var set bool
   902  	var f int16
   903  	var min int
   904  	for i := range a {
   905  		if mask[i] {
   906  			continue
   907  		}
   908  		v := a[i]
   909  		if !set {
   910  			f = v
   911  			min = i
   912  			set = true
   913  			continue
   914  		}
   915  		if v < f {
   916  			min = i
   917  			f = v
   918  		}
   919  	}
   920  	return min
   921  }
   922  
   923  func ArgminMaskedI32(a []int32, mask []bool) int {
   924  	var set bool
   925  	var f int32
   926  	var min int
   927  	for i := range a {
   928  		if mask[i] {
   929  			continue
   930  		}
   931  		v := a[i]
   932  		if !set {
   933  			f = v
   934  			min = i
   935  			set = true
   936  			continue
   937  		}
   938  		if v < f {
   939  			min = i
   940  			f = v
   941  		}
   942  	}
   943  	return min
   944  }
   945  
   946  func ArgminMaskedI64(a []int64, mask []bool) int {
   947  	var set bool
   948  	var f int64
   949  	var min int
   950  	for i := range a {
   951  		if mask[i] {
   952  			continue
   953  		}
   954  		v := a[i]
   955  		if !set {
   956  			f = v
   957  			min = i
   958  			set = true
   959  			continue
   960  		}
   961  		if v < f {
   962  			min = i
   963  			f = v
   964  		}
   965  	}
   966  	return min
   967  }
   968  
   969  func ArgminMaskedU(a []uint, mask []bool) int {
   970  	var set bool
   971  	var f uint
   972  	var min int
   973  	for i := range a {
   974  		if mask[i] {
   975  			continue
   976  		}
   977  		v := a[i]
   978  		if !set {
   979  			f = v
   980  			min = i
   981  			set = true
   982  			continue
   983  		}
   984  		if v < f {
   985  			min = i
   986  			f = v
   987  		}
   988  	}
   989  	return min
   990  }
   991  
   992  func ArgminMaskedU8(a []uint8, mask []bool) int {
   993  	var set bool
   994  	var f uint8
   995  	var min int
   996  	for i := range a {
   997  		if mask[i] {
   998  			continue
   999  		}
  1000  		v := a[i]
  1001  		if !set {
  1002  			f = v
  1003  			min = i
  1004  			set = true
  1005  			continue
  1006  		}
  1007  		if v < f {
  1008  			min = i
  1009  			f = v
  1010  		}
  1011  	}
  1012  	return min
  1013  }
  1014  
  1015  func ArgminMaskedU16(a []uint16, mask []bool) int {
  1016  	var set bool
  1017  	var f uint16
  1018  	var min int
  1019  	for i := range a {
  1020  		if mask[i] {
  1021  			continue
  1022  		}
  1023  		v := a[i]
  1024  		if !set {
  1025  			f = v
  1026  			min = i
  1027  			set = true
  1028  			continue
  1029  		}
  1030  		if v < f {
  1031  			min = i
  1032  			f = v
  1033  		}
  1034  	}
  1035  	return min
  1036  }
  1037  
  1038  func ArgminMaskedU32(a []uint32, mask []bool) int {
  1039  	var set bool
  1040  	var f uint32
  1041  	var min int
  1042  	for i := range a {
  1043  		if mask[i] {
  1044  			continue
  1045  		}
  1046  		v := a[i]
  1047  		if !set {
  1048  			f = v
  1049  			min = i
  1050  			set = true
  1051  			continue
  1052  		}
  1053  		if v < f {
  1054  			min = i
  1055  			f = v
  1056  		}
  1057  	}
  1058  	return min
  1059  }
  1060  
  1061  func ArgminMaskedU64(a []uint64, mask []bool) int {
  1062  	var set bool
  1063  	var f uint64
  1064  	var min int
  1065  	for i := range a {
  1066  		if mask[i] {
  1067  			continue
  1068  		}
  1069  		v := a[i]
  1070  		if !set {
  1071  			f = v
  1072  			min = i
  1073  			set = true
  1074  			continue
  1075  		}
  1076  		if v < f {
  1077  			min = i
  1078  			f = v
  1079  		}
  1080  	}
  1081  	return min
  1082  }
  1083  
  1084  func ArgminMaskedF32(a []float32, mask []bool) int {
  1085  	var set bool
  1086  	var f float32
  1087  	var min int
  1088  	for i := range a {
  1089  		if mask[i] {
  1090  			continue
  1091  		}
  1092  		v := a[i]
  1093  		if !set {
  1094  			f = v
  1095  			min = i
  1096  			set = true
  1097  			continue
  1098  		}
  1099  		if math32.IsNaN(v) || math32.IsInf(v, -1) {
  1100  			min = i
  1101  			return min
  1102  		}
  1103  		if v < f {
  1104  			min = i
  1105  			f = v
  1106  		}
  1107  	}
  1108  	return min
  1109  }
  1110  
  1111  func ArgminMaskedF64(a []float64, mask []bool) int {
  1112  	var set bool
  1113  	var f float64
  1114  	var min int
  1115  	for i := range a {
  1116  		if mask[i] {
  1117  			continue
  1118  		}
  1119  		v := a[i]
  1120  		if !set {
  1121  			f = v
  1122  			min = i
  1123  			set = true
  1124  			continue
  1125  		}
  1126  		if math.IsNaN(v) || math.IsInf(v, -1) {
  1127  			min = i
  1128  			return min
  1129  		}
  1130  		if v < f {
  1131  			min = i
  1132  			f = v
  1133  		}
  1134  	}
  1135  	return min
  1136  }
  1137  
  1138  func ArgminMaskedStr(a []string, mask []bool) int {
  1139  	var set bool
  1140  	var f string
  1141  	var min int
  1142  	for i := range a {
  1143  		if mask[i] {
  1144  			continue
  1145  		}
  1146  		v := a[i]
  1147  		if !set {
  1148  			f = v
  1149  			min = i
  1150  			set = true
  1151  			continue
  1152  		}
  1153  		if v < f {
  1154  			min = i
  1155  			f = v
  1156  		}
  1157  	}
  1158  	return min
  1159  }