gorgonia.org/tensor@v0.9.24/internal/execution/generic_unary.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  )
    11  
    12  func NegI(a []int) {
    13  	for i := range a {
    14  		a[i] = -a[i]
    15  	}
    16  }
    17  
    18  func NegI8(a []int8) {
    19  	for i := range a {
    20  		a[i] = -a[i]
    21  	}
    22  }
    23  
    24  func NegI16(a []int16) {
    25  	for i := range a {
    26  		a[i] = -a[i]
    27  	}
    28  }
    29  
    30  func NegI32(a []int32) {
    31  	for i := range a {
    32  		a[i] = -a[i]
    33  	}
    34  }
    35  
    36  func NegI64(a []int64) {
    37  	for i := range a {
    38  		a[i] = -a[i]
    39  	}
    40  }
    41  
    42  func NegU(a []uint) {
    43  	for i := range a {
    44  		a[i] = -a[i]
    45  	}
    46  }
    47  
    48  func NegU8(a []uint8) {
    49  	for i := range a {
    50  		a[i] = -a[i]
    51  	}
    52  }
    53  
    54  func NegU16(a []uint16) {
    55  	for i := range a {
    56  		a[i] = -a[i]
    57  	}
    58  }
    59  
    60  func NegU32(a []uint32) {
    61  	for i := range a {
    62  		a[i] = -a[i]
    63  	}
    64  }
    65  
    66  func NegU64(a []uint64) {
    67  	for i := range a {
    68  		a[i] = -a[i]
    69  	}
    70  }
    71  
    72  func NegF32(a []float32) {
    73  	for i := range a {
    74  		a[i] = -a[i]
    75  	}
    76  }
    77  
    78  func NegF64(a []float64) {
    79  	for i := range a {
    80  		a[i] = -a[i]
    81  	}
    82  }
    83  
    84  func NegC64(a []complex64) {
    85  	for i := range a {
    86  		a[i] = -a[i]
    87  	}
    88  }
    89  
    90  func NegC128(a []complex128) {
    91  	for i := range a {
    92  		a[i] = -a[i]
    93  	}
    94  }
    95  
    96  func InvI(a []int) {
    97  	for i := range a {
    98  		a[i] = 1 / a[i]
    99  	}
   100  }
   101  
   102  func InvI8(a []int8) {
   103  	for i := range a {
   104  		a[i] = 1 / a[i]
   105  	}
   106  }
   107  
   108  func InvI16(a []int16) {
   109  	for i := range a {
   110  		a[i] = 1 / a[i]
   111  	}
   112  }
   113  
   114  func InvI32(a []int32) {
   115  	for i := range a {
   116  		a[i] = 1 / a[i]
   117  	}
   118  }
   119  
   120  func InvI64(a []int64) {
   121  	for i := range a {
   122  		a[i] = 1 / a[i]
   123  	}
   124  }
   125  
   126  func InvU(a []uint) {
   127  	for i := range a {
   128  		a[i] = 1 / a[i]
   129  	}
   130  }
   131  
   132  func InvU8(a []uint8) {
   133  	for i := range a {
   134  		a[i] = 1 / a[i]
   135  	}
   136  }
   137  
   138  func InvU16(a []uint16) {
   139  	for i := range a {
   140  		a[i] = 1 / a[i]
   141  	}
   142  }
   143  
   144  func InvU32(a []uint32) {
   145  	for i := range a {
   146  		a[i] = 1 / a[i]
   147  	}
   148  }
   149  
   150  func InvU64(a []uint64) {
   151  	for i := range a {
   152  		a[i] = 1 / a[i]
   153  	}
   154  }
   155  
   156  func InvF32(a []float32) {
   157  	for i := range a {
   158  		a[i] = 1 / a[i]
   159  	}
   160  }
   161  
   162  func InvF64(a []float64) {
   163  	for i := range a {
   164  		a[i] = 1 / a[i]
   165  	}
   166  }
   167  
   168  func InvC64(a []complex64) {
   169  	for i := range a {
   170  		a[i] = 1 / a[i]
   171  	}
   172  }
   173  
   174  func InvC128(a []complex128) {
   175  	for i := range a {
   176  		a[i] = 1 / a[i]
   177  	}
   178  }
   179  
   180  func SquareI(a []int) {
   181  	for i := range a {
   182  		a[i] = a[i] * a[i]
   183  	}
   184  }
   185  
   186  func SquareI8(a []int8) {
   187  	for i := range a {
   188  		a[i] = a[i] * a[i]
   189  	}
   190  }
   191  
   192  func SquareI16(a []int16) {
   193  	for i := range a {
   194  		a[i] = a[i] * a[i]
   195  	}
   196  }
   197  
   198  func SquareI32(a []int32) {
   199  	for i := range a {
   200  		a[i] = a[i] * a[i]
   201  	}
   202  }
   203  
   204  func SquareI64(a []int64) {
   205  	for i := range a {
   206  		a[i] = a[i] * a[i]
   207  	}
   208  }
   209  
   210  func SquareU(a []uint) {
   211  	for i := range a {
   212  		a[i] = a[i] * a[i]
   213  	}
   214  }
   215  
   216  func SquareU8(a []uint8) {
   217  	for i := range a {
   218  		a[i] = a[i] * a[i]
   219  	}
   220  }
   221  
   222  func SquareU16(a []uint16) {
   223  	for i := range a {
   224  		a[i] = a[i] * a[i]
   225  	}
   226  }
   227  
   228  func SquareU32(a []uint32) {
   229  	for i := range a {
   230  		a[i] = a[i] * a[i]
   231  	}
   232  }
   233  
   234  func SquareU64(a []uint64) {
   235  	for i := range a {
   236  		a[i] = a[i] * a[i]
   237  	}
   238  }
   239  
   240  func SquareF32(a []float32) {
   241  	for i := range a {
   242  		a[i] = a[i] * a[i]
   243  	}
   244  }
   245  
   246  func SquareF64(a []float64) {
   247  	for i := range a {
   248  		a[i] = a[i] * a[i]
   249  	}
   250  }
   251  
   252  func SquareC64(a []complex64) {
   253  	for i := range a {
   254  		a[i] = a[i] * a[i]
   255  	}
   256  }
   257  
   258  func SquareC128(a []complex128) {
   259  	for i := range a {
   260  		a[i] = a[i] * a[i]
   261  	}
   262  }
   263  
   264  func CubeI(a []int) {
   265  	for i := range a {
   266  		a[i] = a[i] * a[i] * a[i]
   267  	}
   268  }
   269  
   270  func CubeI8(a []int8) {
   271  	for i := range a {
   272  		a[i] = a[i] * a[i] * a[i]
   273  	}
   274  }
   275  
   276  func CubeI16(a []int16) {
   277  	for i := range a {
   278  		a[i] = a[i] * a[i] * a[i]
   279  	}
   280  }
   281  
   282  func CubeI32(a []int32) {
   283  	for i := range a {
   284  		a[i] = a[i] * a[i] * a[i]
   285  	}
   286  }
   287  
   288  func CubeI64(a []int64) {
   289  	for i := range a {
   290  		a[i] = a[i] * a[i] * a[i]
   291  	}
   292  }
   293  
   294  func CubeU(a []uint) {
   295  	for i := range a {
   296  		a[i] = a[i] * a[i] * a[i]
   297  	}
   298  }
   299  
   300  func CubeU8(a []uint8) {
   301  	for i := range a {
   302  		a[i] = a[i] * a[i] * a[i]
   303  	}
   304  }
   305  
   306  func CubeU16(a []uint16) {
   307  	for i := range a {
   308  		a[i] = a[i] * a[i] * a[i]
   309  	}
   310  }
   311  
   312  func CubeU32(a []uint32) {
   313  	for i := range a {
   314  		a[i] = a[i] * a[i] * a[i]
   315  	}
   316  }
   317  
   318  func CubeU64(a []uint64) {
   319  	for i := range a {
   320  		a[i] = a[i] * a[i] * a[i]
   321  	}
   322  }
   323  
   324  func CubeF32(a []float32) {
   325  	for i := range a {
   326  		a[i] = a[i] * a[i] * a[i]
   327  	}
   328  }
   329  
   330  func CubeF64(a []float64) {
   331  	for i := range a {
   332  		a[i] = a[i] * a[i] * a[i]
   333  	}
   334  }
   335  
   336  func CubeC64(a []complex64) {
   337  	for i := range a {
   338  		a[i] = a[i] * a[i] * a[i]
   339  	}
   340  }
   341  
   342  func CubeC128(a []complex128) {
   343  	for i := range a {
   344  		a[i] = a[i] * a[i] * a[i]
   345  	}
   346  }
   347  
   348  func ExpF32(a []float32) {
   349  	for i := range a {
   350  		a[i] = math32.Exp(a[i])
   351  	}
   352  }
   353  
   354  func ExpF64(a []float64) {
   355  	for i := range a {
   356  		a[i] = math.Exp(a[i])
   357  	}
   358  }
   359  
   360  func ExpC64(a []complex64) {
   361  	for i := range a {
   362  		a[i] = complex64(cmplx.Exp(complex128(a[i])))
   363  	}
   364  }
   365  
   366  func ExpC128(a []complex128) {
   367  	for i := range a {
   368  		a[i] = cmplx.Exp(a[i])
   369  	}
   370  }
   371  
   372  func TanhF32(a []float32) {
   373  	for i := range a {
   374  		a[i] = math32.Tanh(a[i])
   375  	}
   376  }
   377  
   378  func TanhF64(a []float64) {
   379  	for i := range a {
   380  		a[i] = math.Tanh(a[i])
   381  	}
   382  }
   383  
   384  func TanhC64(a []complex64) {
   385  	for i := range a {
   386  		a[i] = complex64(cmplx.Tanh(complex128(a[i])))
   387  	}
   388  }
   389  
   390  func TanhC128(a []complex128) {
   391  	for i := range a {
   392  		a[i] = cmplx.Tanh(a[i])
   393  	}
   394  }
   395  
   396  func LogF32(a []float32) {
   397  	for i := range a {
   398  		a[i] = math32.Log(a[i])
   399  	}
   400  }
   401  
   402  func LogF64(a []float64) {
   403  	for i := range a {
   404  		a[i] = math.Log(a[i])
   405  	}
   406  }
   407  
   408  func LogC64(a []complex64) {
   409  	for i := range a {
   410  		a[i] = complex64(cmplx.Log(complex128(a[i])))
   411  	}
   412  }
   413  
   414  func LogC128(a []complex128) {
   415  	for i := range a {
   416  		a[i] = cmplx.Log(a[i])
   417  	}
   418  }
   419  
   420  func Log2F32(a []float32) {
   421  	for i := range a {
   422  		a[i] = math32.Log2(a[i])
   423  	}
   424  }
   425  
   426  func Log2F64(a []float64) {
   427  	for i := range a {
   428  		a[i] = math.Log2(a[i])
   429  	}
   430  }
   431  
   432  func Log10F32(a []float32) {
   433  	for i := range a {
   434  		a[i] = math32.Log10(a[i])
   435  	}
   436  }
   437  
   438  func Log10F64(a []float64) {
   439  	for i := range a {
   440  		a[i] = math.Log10(a[i])
   441  	}
   442  }
   443  
   444  func Log10C64(a []complex64) {
   445  	for i := range a {
   446  		a[i] = complex64(cmplx.Log10(complex128(a[i])))
   447  	}
   448  }
   449  
   450  func Log10C128(a []complex128) {
   451  	for i := range a {
   452  		a[i] = cmplx.Log10(a[i])
   453  	}
   454  }
   455  
   456  func SqrtF32(a []float32) {
   457  	for i := range a {
   458  		a[i] = math32.Sqrt(a[i])
   459  	}
   460  }
   461  
   462  func SqrtF64(a []float64) {
   463  	for i := range a {
   464  		a[i] = math.Sqrt(a[i])
   465  	}
   466  }
   467  
   468  func SqrtC64(a []complex64) {
   469  	for i := range a {
   470  		a[i] = complex64(cmplx.Sqrt(complex128(a[i])))
   471  	}
   472  }
   473  
   474  func SqrtC128(a []complex128) {
   475  	for i := range a {
   476  		a[i] = cmplx.Sqrt(a[i])
   477  	}
   478  }
   479  
   480  func CbrtF32(a []float32) {
   481  	for i := range a {
   482  		a[i] = math32.Cbrt(a[i])
   483  	}
   484  }
   485  
   486  func CbrtF64(a []float64) {
   487  	for i := range a {
   488  		a[i] = math.Cbrt(a[i])
   489  	}
   490  }
   491  
   492  func InvSqrtF32(a []float32) {
   493  	for i := range a {
   494  		a[i] = float32(1) / math32.Sqrt(a[i])
   495  	}
   496  }
   497  
   498  func InvSqrtF64(a []float64) {
   499  	for i := range a {
   500  		a[i] = float64(1) / math.Sqrt(a[i])
   501  	}
   502  }
   503  
   504  func NegIterI(a []int, ait Iterator) (err error) {
   505  	var i int
   506  	var validi bool
   507  	for {
   508  		if i, validi, err = ait.NextValidity(); err != nil {
   509  			err = handleNoOp(err)
   510  			break
   511  		}
   512  		if validi {
   513  			a[i] = -a[i]
   514  		}
   515  	}
   516  	return
   517  }
   518  
   519  func NegIterI8(a []int8, ait Iterator) (err error) {
   520  	var i int
   521  	var validi bool
   522  	for {
   523  		if i, validi, err = ait.NextValidity(); err != nil {
   524  			err = handleNoOp(err)
   525  			break
   526  		}
   527  		if validi {
   528  			a[i] = -a[i]
   529  		}
   530  	}
   531  	return
   532  }
   533  
   534  func NegIterI16(a []int16, ait Iterator) (err error) {
   535  	var i int
   536  	var validi bool
   537  	for {
   538  		if i, validi, err = ait.NextValidity(); err != nil {
   539  			err = handleNoOp(err)
   540  			break
   541  		}
   542  		if validi {
   543  			a[i] = -a[i]
   544  		}
   545  	}
   546  	return
   547  }
   548  
   549  func NegIterI32(a []int32, ait Iterator) (err error) {
   550  	var i int
   551  	var validi bool
   552  	for {
   553  		if i, validi, err = ait.NextValidity(); err != nil {
   554  			err = handleNoOp(err)
   555  			break
   556  		}
   557  		if validi {
   558  			a[i] = -a[i]
   559  		}
   560  	}
   561  	return
   562  }
   563  
   564  func NegIterI64(a []int64, ait Iterator) (err error) {
   565  	var i int
   566  	var validi bool
   567  	for {
   568  		if i, validi, err = ait.NextValidity(); err != nil {
   569  			err = handleNoOp(err)
   570  			break
   571  		}
   572  		if validi {
   573  			a[i] = -a[i]
   574  		}
   575  	}
   576  	return
   577  }
   578  
   579  func NegIterU(a []uint, ait Iterator) (err error) {
   580  	var i int
   581  	var validi bool
   582  	for {
   583  		if i, validi, err = ait.NextValidity(); err != nil {
   584  			err = handleNoOp(err)
   585  			break
   586  		}
   587  		if validi {
   588  			a[i] = -a[i]
   589  		}
   590  	}
   591  	return
   592  }
   593  
   594  func NegIterU8(a []uint8, ait Iterator) (err error) {
   595  	var i int
   596  	var validi bool
   597  	for {
   598  		if i, validi, err = ait.NextValidity(); err != nil {
   599  			err = handleNoOp(err)
   600  			break
   601  		}
   602  		if validi {
   603  			a[i] = -a[i]
   604  		}
   605  	}
   606  	return
   607  }
   608  
   609  func NegIterU16(a []uint16, ait Iterator) (err error) {
   610  	var i int
   611  	var validi bool
   612  	for {
   613  		if i, validi, err = ait.NextValidity(); err != nil {
   614  			err = handleNoOp(err)
   615  			break
   616  		}
   617  		if validi {
   618  			a[i] = -a[i]
   619  		}
   620  	}
   621  	return
   622  }
   623  
   624  func NegIterU32(a []uint32, ait Iterator) (err error) {
   625  	var i int
   626  	var validi bool
   627  	for {
   628  		if i, validi, err = ait.NextValidity(); err != nil {
   629  			err = handleNoOp(err)
   630  			break
   631  		}
   632  		if validi {
   633  			a[i] = -a[i]
   634  		}
   635  	}
   636  	return
   637  }
   638  
   639  func NegIterU64(a []uint64, ait Iterator) (err error) {
   640  	var i int
   641  	var validi bool
   642  	for {
   643  		if i, validi, err = ait.NextValidity(); err != nil {
   644  			err = handleNoOp(err)
   645  			break
   646  		}
   647  		if validi {
   648  			a[i] = -a[i]
   649  		}
   650  	}
   651  	return
   652  }
   653  
   654  func NegIterF32(a []float32, ait Iterator) (err error) {
   655  	var i int
   656  	var validi bool
   657  	for {
   658  		if i, validi, err = ait.NextValidity(); err != nil {
   659  			err = handleNoOp(err)
   660  			break
   661  		}
   662  		if validi {
   663  			a[i] = -a[i]
   664  		}
   665  	}
   666  	return
   667  }
   668  
   669  func NegIterF64(a []float64, ait Iterator) (err error) {
   670  	var i int
   671  	var validi bool
   672  	for {
   673  		if i, validi, err = ait.NextValidity(); err != nil {
   674  			err = handleNoOp(err)
   675  			break
   676  		}
   677  		if validi {
   678  			a[i] = -a[i]
   679  		}
   680  	}
   681  	return
   682  }
   683  
   684  func NegIterC64(a []complex64, ait Iterator) (err error) {
   685  	var i int
   686  	var validi bool
   687  	for {
   688  		if i, validi, err = ait.NextValidity(); err != nil {
   689  			err = handleNoOp(err)
   690  			break
   691  		}
   692  		if validi {
   693  			a[i] = -a[i]
   694  		}
   695  	}
   696  	return
   697  }
   698  
   699  func NegIterC128(a []complex128, ait Iterator) (err error) {
   700  	var i int
   701  	var validi bool
   702  	for {
   703  		if i, validi, err = ait.NextValidity(); err != nil {
   704  			err = handleNoOp(err)
   705  			break
   706  		}
   707  		if validi {
   708  			a[i] = -a[i]
   709  		}
   710  	}
   711  	return
   712  }
   713  
   714  func InvIterI(a []int, ait Iterator) (err error) {
   715  	var i int
   716  	var validi bool
   717  	for {
   718  		if i, validi, err = ait.NextValidity(); err != nil {
   719  			err = handleNoOp(err)
   720  			break
   721  		}
   722  		if validi {
   723  			a[i] = 1 / a[i]
   724  		}
   725  	}
   726  	return
   727  }
   728  
   729  func InvIterI8(a []int8, ait Iterator) (err error) {
   730  	var i int
   731  	var validi bool
   732  	for {
   733  		if i, validi, err = ait.NextValidity(); err != nil {
   734  			err = handleNoOp(err)
   735  			break
   736  		}
   737  		if validi {
   738  			a[i] = 1 / a[i]
   739  		}
   740  	}
   741  	return
   742  }
   743  
   744  func InvIterI16(a []int16, ait Iterator) (err error) {
   745  	var i int
   746  	var validi bool
   747  	for {
   748  		if i, validi, err = ait.NextValidity(); err != nil {
   749  			err = handleNoOp(err)
   750  			break
   751  		}
   752  		if validi {
   753  			a[i] = 1 / a[i]
   754  		}
   755  	}
   756  	return
   757  }
   758  
   759  func InvIterI32(a []int32, ait Iterator) (err error) {
   760  	var i int
   761  	var validi bool
   762  	for {
   763  		if i, validi, err = ait.NextValidity(); err != nil {
   764  			err = handleNoOp(err)
   765  			break
   766  		}
   767  		if validi {
   768  			a[i] = 1 / a[i]
   769  		}
   770  	}
   771  	return
   772  }
   773  
   774  func InvIterI64(a []int64, ait Iterator) (err error) {
   775  	var i int
   776  	var validi bool
   777  	for {
   778  		if i, validi, err = ait.NextValidity(); err != nil {
   779  			err = handleNoOp(err)
   780  			break
   781  		}
   782  		if validi {
   783  			a[i] = 1 / a[i]
   784  		}
   785  	}
   786  	return
   787  }
   788  
   789  func InvIterU(a []uint, ait Iterator) (err error) {
   790  	var i int
   791  	var validi bool
   792  	for {
   793  		if i, validi, err = ait.NextValidity(); err != nil {
   794  			err = handleNoOp(err)
   795  			break
   796  		}
   797  		if validi {
   798  			a[i] = 1 / a[i]
   799  		}
   800  	}
   801  	return
   802  }
   803  
   804  func InvIterU8(a []uint8, ait Iterator) (err error) {
   805  	var i int
   806  	var validi bool
   807  	for {
   808  		if i, validi, err = ait.NextValidity(); err != nil {
   809  			err = handleNoOp(err)
   810  			break
   811  		}
   812  		if validi {
   813  			a[i] = 1 / a[i]
   814  		}
   815  	}
   816  	return
   817  }
   818  
   819  func InvIterU16(a []uint16, ait Iterator) (err error) {
   820  	var i int
   821  	var validi bool
   822  	for {
   823  		if i, validi, err = ait.NextValidity(); err != nil {
   824  			err = handleNoOp(err)
   825  			break
   826  		}
   827  		if validi {
   828  			a[i] = 1 / a[i]
   829  		}
   830  	}
   831  	return
   832  }
   833  
   834  func InvIterU32(a []uint32, ait Iterator) (err error) {
   835  	var i int
   836  	var validi bool
   837  	for {
   838  		if i, validi, err = ait.NextValidity(); err != nil {
   839  			err = handleNoOp(err)
   840  			break
   841  		}
   842  		if validi {
   843  			a[i] = 1 / a[i]
   844  		}
   845  	}
   846  	return
   847  }
   848  
   849  func InvIterU64(a []uint64, ait Iterator) (err error) {
   850  	var i int
   851  	var validi bool
   852  	for {
   853  		if i, validi, err = ait.NextValidity(); err != nil {
   854  			err = handleNoOp(err)
   855  			break
   856  		}
   857  		if validi {
   858  			a[i] = 1 / a[i]
   859  		}
   860  	}
   861  	return
   862  }
   863  
   864  func InvIterF32(a []float32, ait Iterator) (err error) {
   865  	var i int
   866  	var validi bool
   867  	for {
   868  		if i, validi, err = ait.NextValidity(); err != nil {
   869  			err = handleNoOp(err)
   870  			break
   871  		}
   872  		if validi {
   873  			a[i] = 1 / a[i]
   874  		}
   875  	}
   876  	return
   877  }
   878  
   879  func InvIterF64(a []float64, ait Iterator) (err error) {
   880  	var i int
   881  	var validi bool
   882  	for {
   883  		if i, validi, err = ait.NextValidity(); err != nil {
   884  			err = handleNoOp(err)
   885  			break
   886  		}
   887  		if validi {
   888  			a[i] = 1 / a[i]
   889  		}
   890  	}
   891  	return
   892  }
   893  
   894  func InvIterC64(a []complex64, ait Iterator) (err error) {
   895  	var i int
   896  	var validi bool
   897  	for {
   898  		if i, validi, err = ait.NextValidity(); err != nil {
   899  			err = handleNoOp(err)
   900  			break
   901  		}
   902  		if validi {
   903  			a[i] = 1 / a[i]
   904  		}
   905  	}
   906  	return
   907  }
   908  
   909  func InvIterC128(a []complex128, ait Iterator) (err error) {
   910  	var i int
   911  	var validi bool
   912  	for {
   913  		if i, validi, err = ait.NextValidity(); err != nil {
   914  			err = handleNoOp(err)
   915  			break
   916  		}
   917  		if validi {
   918  			a[i] = 1 / a[i]
   919  		}
   920  	}
   921  	return
   922  }
   923  
   924  func SquareIterI(a []int, ait Iterator) (err error) {
   925  	var i int
   926  	var validi bool
   927  	for {
   928  		if i, validi, err = ait.NextValidity(); err != nil {
   929  			err = handleNoOp(err)
   930  			break
   931  		}
   932  		if validi {
   933  			a[i] = a[i] * a[i]
   934  		}
   935  	}
   936  	return
   937  }
   938  
   939  func SquareIterI8(a []int8, ait Iterator) (err error) {
   940  	var i int
   941  	var validi bool
   942  	for {
   943  		if i, validi, err = ait.NextValidity(); err != nil {
   944  			err = handleNoOp(err)
   945  			break
   946  		}
   947  		if validi {
   948  			a[i] = a[i] * a[i]
   949  		}
   950  	}
   951  	return
   952  }
   953  
   954  func SquareIterI16(a []int16, ait Iterator) (err error) {
   955  	var i int
   956  	var validi bool
   957  	for {
   958  		if i, validi, err = ait.NextValidity(); err != nil {
   959  			err = handleNoOp(err)
   960  			break
   961  		}
   962  		if validi {
   963  			a[i] = a[i] * a[i]
   964  		}
   965  	}
   966  	return
   967  }
   968  
   969  func SquareIterI32(a []int32, ait Iterator) (err error) {
   970  	var i int
   971  	var validi bool
   972  	for {
   973  		if i, validi, err = ait.NextValidity(); err != nil {
   974  			err = handleNoOp(err)
   975  			break
   976  		}
   977  		if validi {
   978  			a[i] = a[i] * a[i]
   979  		}
   980  	}
   981  	return
   982  }
   983  
   984  func SquareIterI64(a []int64, ait Iterator) (err error) {
   985  	var i int
   986  	var validi bool
   987  	for {
   988  		if i, validi, err = ait.NextValidity(); err != nil {
   989  			err = handleNoOp(err)
   990  			break
   991  		}
   992  		if validi {
   993  			a[i] = a[i] * a[i]
   994  		}
   995  	}
   996  	return
   997  }
   998  
   999  func SquareIterU(a []uint, ait Iterator) (err error) {
  1000  	var i int
  1001  	var validi bool
  1002  	for {
  1003  		if i, validi, err = ait.NextValidity(); err != nil {
  1004  			err = handleNoOp(err)
  1005  			break
  1006  		}
  1007  		if validi {
  1008  			a[i] = a[i] * a[i]
  1009  		}
  1010  	}
  1011  	return
  1012  }
  1013  
  1014  func SquareIterU8(a []uint8, ait Iterator) (err error) {
  1015  	var i int
  1016  	var validi bool
  1017  	for {
  1018  		if i, validi, err = ait.NextValidity(); err != nil {
  1019  			err = handleNoOp(err)
  1020  			break
  1021  		}
  1022  		if validi {
  1023  			a[i] = a[i] * a[i]
  1024  		}
  1025  	}
  1026  	return
  1027  }
  1028  
  1029  func SquareIterU16(a []uint16, ait Iterator) (err error) {
  1030  	var i int
  1031  	var validi bool
  1032  	for {
  1033  		if i, validi, err = ait.NextValidity(); err != nil {
  1034  			err = handleNoOp(err)
  1035  			break
  1036  		}
  1037  		if validi {
  1038  			a[i] = a[i] * a[i]
  1039  		}
  1040  	}
  1041  	return
  1042  }
  1043  
  1044  func SquareIterU32(a []uint32, ait Iterator) (err error) {
  1045  	var i int
  1046  	var validi bool
  1047  	for {
  1048  		if i, validi, err = ait.NextValidity(); err != nil {
  1049  			err = handleNoOp(err)
  1050  			break
  1051  		}
  1052  		if validi {
  1053  			a[i] = a[i] * a[i]
  1054  		}
  1055  	}
  1056  	return
  1057  }
  1058  
  1059  func SquareIterU64(a []uint64, ait Iterator) (err error) {
  1060  	var i int
  1061  	var validi bool
  1062  	for {
  1063  		if i, validi, err = ait.NextValidity(); err != nil {
  1064  			err = handleNoOp(err)
  1065  			break
  1066  		}
  1067  		if validi {
  1068  			a[i] = a[i] * a[i]
  1069  		}
  1070  	}
  1071  	return
  1072  }
  1073  
  1074  func SquareIterF32(a []float32, ait Iterator) (err error) {
  1075  	var i int
  1076  	var validi bool
  1077  	for {
  1078  		if i, validi, err = ait.NextValidity(); err != nil {
  1079  			err = handleNoOp(err)
  1080  			break
  1081  		}
  1082  		if validi {
  1083  			a[i] = a[i] * a[i]
  1084  		}
  1085  	}
  1086  	return
  1087  }
  1088  
  1089  func SquareIterF64(a []float64, ait Iterator) (err error) {
  1090  	var i int
  1091  	var validi bool
  1092  	for {
  1093  		if i, validi, err = ait.NextValidity(); err != nil {
  1094  			err = handleNoOp(err)
  1095  			break
  1096  		}
  1097  		if validi {
  1098  			a[i] = a[i] * a[i]
  1099  		}
  1100  	}
  1101  	return
  1102  }
  1103  
  1104  func SquareIterC64(a []complex64, ait Iterator) (err error) {
  1105  	var i int
  1106  	var validi bool
  1107  	for {
  1108  		if i, validi, err = ait.NextValidity(); err != nil {
  1109  			err = handleNoOp(err)
  1110  			break
  1111  		}
  1112  		if validi {
  1113  			a[i] = a[i] * a[i]
  1114  		}
  1115  	}
  1116  	return
  1117  }
  1118  
  1119  func SquareIterC128(a []complex128, ait Iterator) (err error) {
  1120  	var i int
  1121  	var validi bool
  1122  	for {
  1123  		if i, validi, err = ait.NextValidity(); err != nil {
  1124  			err = handleNoOp(err)
  1125  			break
  1126  		}
  1127  		if validi {
  1128  			a[i] = a[i] * a[i]
  1129  		}
  1130  	}
  1131  	return
  1132  }
  1133  
  1134  func CubeIterI(a []int, ait Iterator) (err error) {
  1135  	var i int
  1136  	var validi bool
  1137  	for {
  1138  		if i, validi, err = ait.NextValidity(); err != nil {
  1139  			err = handleNoOp(err)
  1140  			break
  1141  		}
  1142  		if validi {
  1143  			a[i] = a[i] * a[i] * a[i]
  1144  		}
  1145  	}
  1146  	return
  1147  }
  1148  
  1149  func CubeIterI8(a []int8, ait Iterator) (err error) {
  1150  	var i int
  1151  	var validi bool
  1152  	for {
  1153  		if i, validi, err = ait.NextValidity(); err != nil {
  1154  			err = handleNoOp(err)
  1155  			break
  1156  		}
  1157  		if validi {
  1158  			a[i] = a[i] * a[i] * a[i]
  1159  		}
  1160  	}
  1161  	return
  1162  }
  1163  
  1164  func CubeIterI16(a []int16, ait Iterator) (err error) {
  1165  	var i int
  1166  	var validi bool
  1167  	for {
  1168  		if i, validi, err = ait.NextValidity(); err != nil {
  1169  			err = handleNoOp(err)
  1170  			break
  1171  		}
  1172  		if validi {
  1173  			a[i] = a[i] * a[i] * a[i]
  1174  		}
  1175  	}
  1176  	return
  1177  }
  1178  
  1179  func CubeIterI32(a []int32, ait Iterator) (err error) {
  1180  	var i int
  1181  	var validi bool
  1182  	for {
  1183  		if i, validi, err = ait.NextValidity(); err != nil {
  1184  			err = handleNoOp(err)
  1185  			break
  1186  		}
  1187  		if validi {
  1188  			a[i] = a[i] * a[i] * a[i]
  1189  		}
  1190  	}
  1191  	return
  1192  }
  1193  
  1194  func CubeIterI64(a []int64, ait Iterator) (err error) {
  1195  	var i int
  1196  	var validi bool
  1197  	for {
  1198  		if i, validi, err = ait.NextValidity(); err != nil {
  1199  			err = handleNoOp(err)
  1200  			break
  1201  		}
  1202  		if validi {
  1203  			a[i] = a[i] * a[i] * a[i]
  1204  		}
  1205  	}
  1206  	return
  1207  }
  1208  
  1209  func CubeIterU(a []uint, ait Iterator) (err error) {
  1210  	var i int
  1211  	var validi bool
  1212  	for {
  1213  		if i, validi, err = ait.NextValidity(); err != nil {
  1214  			err = handleNoOp(err)
  1215  			break
  1216  		}
  1217  		if validi {
  1218  			a[i] = a[i] * a[i] * a[i]
  1219  		}
  1220  	}
  1221  	return
  1222  }
  1223  
  1224  func CubeIterU8(a []uint8, ait Iterator) (err error) {
  1225  	var i int
  1226  	var validi bool
  1227  	for {
  1228  		if i, validi, err = ait.NextValidity(); err != nil {
  1229  			err = handleNoOp(err)
  1230  			break
  1231  		}
  1232  		if validi {
  1233  			a[i] = a[i] * a[i] * a[i]
  1234  		}
  1235  	}
  1236  	return
  1237  }
  1238  
  1239  func CubeIterU16(a []uint16, ait Iterator) (err error) {
  1240  	var i int
  1241  	var validi bool
  1242  	for {
  1243  		if i, validi, err = ait.NextValidity(); err != nil {
  1244  			err = handleNoOp(err)
  1245  			break
  1246  		}
  1247  		if validi {
  1248  			a[i] = a[i] * a[i] * a[i]
  1249  		}
  1250  	}
  1251  	return
  1252  }
  1253  
  1254  func CubeIterU32(a []uint32, ait Iterator) (err error) {
  1255  	var i int
  1256  	var validi bool
  1257  	for {
  1258  		if i, validi, err = ait.NextValidity(); err != nil {
  1259  			err = handleNoOp(err)
  1260  			break
  1261  		}
  1262  		if validi {
  1263  			a[i] = a[i] * a[i] * a[i]
  1264  		}
  1265  	}
  1266  	return
  1267  }
  1268  
  1269  func CubeIterU64(a []uint64, ait Iterator) (err error) {
  1270  	var i int
  1271  	var validi bool
  1272  	for {
  1273  		if i, validi, err = ait.NextValidity(); err != nil {
  1274  			err = handleNoOp(err)
  1275  			break
  1276  		}
  1277  		if validi {
  1278  			a[i] = a[i] * a[i] * a[i]
  1279  		}
  1280  	}
  1281  	return
  1282  }
  1283  
  1284  func CubeIterF32(a []float32, ait Iterator) (err error) {
  1285  	var i int
  1286  	var validi bool
  1287  	for {
  1288  		if i, validi, err = ait.NextValidity(); err != nil {
  1289  			err = handleNoOp(err)
  1290  			break
  1291  		}
  1292  		if validi {
  1293  			a[i] = a[i] * a[i] * a[i]
  1294  		}
  1295  	}
  1296  	return
  1297  }
  1298  
  1299  func CubeIterF64(a []float64, ait Iterator) (err error) {
  1300  	var i int
  1301  	var validi bool
  1302  	for {
  1303  		if i, validi, err = ait.NextValidity(); err != nil {
  1304  			err = handleNoOp(err)
  1305  			break
  1306  		}
  1307  		if validi {
  1308  			a[i] = a[i] * a[i] * a[i]
  1309  		}
  1310  	}
  1311  	return
  1312  }
  1313  
  1314  func CubeIterC64(a []complex64, ait Iterator) (err error) {
  1315  	var i int
  1316  	var validi bool
  1317  	for {
  1318  		if i, validi, err = ait.NextValidity(); err != nil {
  1319  			err = handleNoOp(err)
  1320  			break
  1321  		}
  1322  		if validi {
  1323  			a[i] = a[i] * a[i] * a[i]
  1324  		}
  1325  	}
  1326  	return
  1327  }
  1328  
  1329  func CubeIterC128(a []complex128, ait Iterator) (err error) {
  1330  	var i int
  1331  	var validi bool
  1332  	for {
  1333  		if i, validi, err = ait.NextValidity(); err != nil {
  1334  			err = handleNoOp(err)
  1335  			break
  1336  		}
  1337  		if validi {
  1338  			a[i] = a[i] * a[i] * a[i]
  1339  		}
  1340  	}
  1341  	return
  1342  }
  1343  
  1344  func ExpIterF32(a []float32, ait Iterator) (err error) {
  1345  	var i int
  1346  	var validi bool
  1347  	for {
  1348  		if i, validi, err = ait.NextValidity(); err != nil {
  1349  			err = handleNoOp(err)
  1350  			break
  1351  		}
  1352  		if validi {
  1353  			a[i] = math32.Exp(a[i])
  1354  		}
  1355  	}
  1356  	return
  1357  }
  1358  
  1359  func ExpIterF64(a []float64, ait Iterator) (err error) {
  1360  	var i int
  1361  	var validi bool
  1362  	for {
  1363  		if i, validi, err = ait.NextValidity(); err != nil {
  1364  			err = handleNoOp(err)
  1365  			break
  1366  		}
  1367  		if validi {
  1368  			a[i] = math.Exp(a[i])
  1369  		}
  1370  	}
  1371  	return
  1372  }
  1373  
  1374  func ExpIterC64(a []complex64, ait Iterator) (err error) {
  1375  	var i int
  1376  	var validi bool
  1377  	for {
  1378  		if i, validi, err = ait.NextValidity(); err != nil {
  1379  			err = handleNoOp(err)
  1380  			break
  1381  		}
  1382  		if validi {
  1383  			a[i] = complex64(cmplx.Exp(complex128(a[i])))
  1384  		}
  1385  	}
  1386  	return
  1387  }
  1388  
  1389  func ExpIterC128(a []complex128, ait Iterator) (err error) {
  1390  	var i int
  1391  	var validi bool
  1392  	for {
  1393  		if i, validi, err = ait.NextValidity(); err != nil {
  1394  			err = handleNoOp(err)
  1395  			break
  1396  		}
  1397  		if validi {
  1398  			a[i] = cmplx.Exp(a[i])
  1399  		}
  1400  	}
  1401  	return
  1402  }
  1403  
  1404  func TanhIterF32(a []float32, ait Iterator) (err error) {
  1405  	var i int
  1406  	var validi bool
  1407  	for {
  1408  		if i, validi, err = ait.NextValidity(); err != nil {
  1409  			err = handleNoOp(err)
  1410  			break
  1411  		}
  1412  		if validi {
  1413  			a[i] = math32.Tanh(a[i])
  1414  		}
  1415  	}
  1416  	return
  1417  }
  1418  
  1419  func TanhIterF64(a []float64, ait Iterator) (err error) {
  1420  	var i int
  1421  	var validi bool
  1422  	for {
  1423  		if i, validi, err = ait.NextValidity(); err != nil {
  1424  			err = handleNoOp(err)
  1425  			break
  1426  		}
  1427  		if validi {
  1428  			a[i] = math.Tanh(a[i])
  1429  		}
  1430  	}
  1431  	return
  1432  }
  1433  
  1434  func TanhIterC64(a []complex64, ait Iterator) (err error) {
  1435  	var i int
  1436  	var validi bool
  1437  	for {
  1438  		if i, validi, err = ait.NextValidity(); err != nil {
  1439  			err = handleNoOp(err)
  1440  			break
  1441  		}
  1442  		if validi {
  1443  			a[i] = complex64(cmplx.Tanh(complex128(a[i])))
  1444  		}
  1445  	}
  1446  	return
  1447  }
  1448  
  1449  func TanhIterC128(a []complex128, ait Iterator) (err error) {
  1450  	var i int
  1451  	var validi bool
  1452  	for {
  1453  		if i, validi, err = ait.NextValidity(); err != nil {
  1454  			err = handleNoOp(err)
  1455  			break
  1456  		}
  1457  		if validi {
  1458  			a[i] = cmplx.Tanh(a[i])
  1459  		}
  1460  	}
  1461  	return
  1462  }
  1463  
  1464  func LogIterF32(a []float32, ait Iterator) (err error) {
  1465  	var i int
  1466  	var validi bool
  1467  	for {
  1468  		if i, validi, err = ait.NextValidity(); err != nil {
  1469  			err = handleNoOp(err)
  1470  			break
  1471  		}
  1472  		if validi {
  1473  			a[i] = math32.Log(a[i])
  1474  		}
  1475  	}
  1476  	return
  1477  }
  1478  
  1479  func LogIterF64(a []float64, ait Iterator) (err error) {
  1480  	var i int
  1481  	var validi bool
  1482  	for {
  1483  		if i, validi, err = ait.NextValidity(); err != nil {
  1484  			err = handleNoOp(err)
  1485  			break
  1486  		}
  1487  		if validi {
  1488  			a[i] = math.Log(a[i])
  1489  		}
  1490  	}
  1491  	return
  1492  }
  1493  
  1494  func LogIterC64(a []complex64, ait Iterator) (err error) {
  1495  	var i int
  1496  	var validi bool
  1497  	for {
  1498  		if i, validi, err = ait.NextValidity(); err != nil {
  1499  			err = handleNoOp(err)
  1500  			break
  1501  		}
  1502  		if validi {
  1503  			a[i] = complex64(cmplx.Log(complex128(a[i])))
  1504  		}
  1505  	}
  1506  	return
  1507  }
  1508  
  1509  func LogIterC128(a []complex128, ait Iterator) (err error) {
  1510  	var i int
  1511  	var validi bool
  1512  	for {
  1513  		if i, validi, err = ait.NextValidity(); err != nil {
  1514  			err = handleNoOp(err)
  1515  			break
  1516  		}
  1517  		if validi {
  1518  			a[i] = cmplx.Log(a[i])
  1519  		}
  1520  	}
  1521  	return
  1522  }
  1523  
  1524  func Log2IterF32(a []float32, ait Iterator) (err error) {
  1525  	var i int
  1526  	var validi bool
  1527  	for {
  1528  		if i, validi, err = ait.NextValidity(); err != nil {
  1529  			err = handleNoOp(err)
  1530  			break
  1531  		}
  1532  		if validi {
  1533  			a[i] = math32.Log2(a[i])
  1534  		}
  1535  	}
  1536  	return
  1537  }
  1538  
  1539  func Log2IterF64(a []float64, ait Iterator) (err error) {
  1540  	var i int
  1541  	var validi bool
  1542  	for {
  1543  		if i, validi, err = ait.NextValidity(); err != nil {
  1544  			err = handleNoOp(err)
  1545  			break
  1546  		}
  1547  		if validi {
  1548  			a[i] = math.Log2(a[i])
  1549  		}
  1550  	}
  1551  	return
  1552  }
  1553  
  1554  func Log10IterF32(a []float32, ait Iterator) (err error) {
  1555  	var i int
  1556  	var validi bool
  1557  	for {
  1558  		if i, validi, err = ait.NextValidity(); err != nil {
  1559  			err = handleNoOp(err)
  1560  			break
  1561  		}
  1562  		if validi {
  1563  			a[i] = math32.Log10(a[i])
  1564  		}
  1565  	}
  1566  	return
  1567  }
  1568  
  1569  func Log10IterF64(a []float64, ait Iterator) (err error) {
  1570  	var i int
  1571  	var validi bool
  1572  	for {
  1573  		if i, validi, err = ait.NextValidity(); err != nil {
  1574  			err = handleNoOp(err)
  1575  			break
  1576  		}
  1577  		if validi {
  1578  			a[i] = math.Log10(a[i])
  1579  		}
  1580  	}
  1581  	return
  1582  }
  1583  
  1584  func Log10IterC64(a []complex64, ait Iterator) (err error) {
  1585  	var i int
  1586  	var validi bool
  1587  	for {
  1588  		if i, validi, err = ait.NextValidity(); err != nil {
  1589  			err = handleNoOp(err)
  1590  			break
  1591  		}
  1592  		if validi {
  1593  			a[i] = complex64(cmplx.Log10(complex128(a[i])))
  1594  		}
  1595  	}
  1596  	return
  1597  }
  1598  
  1599  func Log10IterC128(a []complex128, ait Iterator) (err error) {
  1600  	var i int
  1601  	var validi bool
  1602  	for {
  1603  		if i, validi, err = ait.NextValidity(); err != nil {
  1604  			err = handleNoOp(err)
  1605  			break
  1606  		}
  1607  		if validi {
  1608  			a[i] = cmplx.Log10(a[i])
  1609  		}
  1610  	}
  1611  	return
  1612  }
  1613  
  1614  func SqrtIterF32(a []float32, ait Iterator) (err error) {
  1615  	var i int
  1616  	var validi bool
  1617  	for {
  1618  		if i, validi, err = ait.NextValidity(); err != nil {
  1619  			err = handleNoOp(err)
  1620  			break
  1621  		}
  1622  		if validi {
  1623  			a[i] = math32.Sqrt(a[i])
  1624  		}
  1625  	}
  1626  	return
  1627  }
  1628  
  1629  func SqrtIterF64(a []float64, ait Iterator) (err error) {
  1630  	var i int
  1631  	var validi bool
  1632  	for {
  1633  		if i, validi, err = ait.NextValidity(); err != nil {
  1634  			err = handleNoOp(err)
  1635  			break
  1636  		}
  1637  		if validi {
  1638  			a[i] = math.Sqrt(a[i])
  1639  		}
  1640  	}
  1641  	return
  1642  }
  1643  
  1644  func SqrtIterC64(a []complex64, ait Iterator) (err error) {
  1645  	var i int
  1646  	var validi bool
  1647  	for {
  1648  		if i, validi, err = ait.NextValidity(); err != nil {
  1649  			err = handleNoOp(err)
  1650  			break
  1651  		}
  1652  		if validi {
  1653  			a[i] = complex64(cmplx.Sqrt(complex128(a[i])))
  1654  		}
  1655  	}
  1656  	return
  1657  }
  1658  
  1659  func SqrtIterC128(a []complex128, ait Iterator) (err error) {
  1660  	var i int
  1661  	var validi bool
  1662  	for {
  1663  		if i, validi, err = ait.NextValidity(); err != nil {
  1664  			err = handleNoOp(err)
  1665  			break
  1666  		}
  1667  		if validi {
  1668  			a[i] = cmplx.Sqrt(a[i])
  1669  		}
  1670  	}
  1671  	return
  1672  }
  1673  
  1674  func CbrtIterF32(a []float32, ait Iterator) (err error) {
  1675  	var i int
  1676  	var validi bool
  1677  	for {
  1678  		if i, validi, err = ait.NextValidity(); err != nil {
  1679  			err = handleNoOp(err)
  1680  			break
  1681  		}
  1682  		if validi {
  1683  			a[i] = math32.Cbrt(a[i])
  1684  		}
  1685  	}
  1686  	return
  1687  }
  1688  
  1689  func CbrtIterF64(a []float64, ait Iterator) (err error) {
  1690  	var i int
  1691  	var validi bool
  1692  	for {
  1693  		if i, validi, err = ait.NextValidity(); err != nil {
  1694  			err = handleNoOp(err)
  1695  			break
  1696  		}
  1697  		if validi {
  1698  			a[i] = math.Cbrt(a[i])
  1699  		}
  1700  	}
  1701  	return
  1702  }
  1703  
  1704  func InvSqrtIterF32(a []float32, ait Iterator) (err error) {
  1705  	var i int
  1706  	var validi bool
  1707  	for {
  1708  		if i, validi, err = ait.NextValidity(); err != nil {
  1709  			err = handleNoOp(err)
  1710  			break
  1711  		}
  1712  		if validi {
  1713  			a[i] = float32(1) / math32.Sqrt(a[i])
  1714  		}
  1715  	}
  1716  	return
  1717  }
  1718  
  1719  func InvSqrtIterF64(a []float64, ait Iterator) (err error) {
  1720  	var i int
  1721  	var validi bool
  1722  	for {
  1723  		if i, validi, err = ait.NextValidity(); err != nil {
  1724  			err = handleNoOp(err)
  1725  			break
  1726  		}
  1727  		if validi {
  1728  			a[i] = float64(1) / math.Sqrt(a[i])
  1729  		}
  1730  	}
  1731  	return
  1732  }
  1733  
  1734  func AbsI(a []int) {
  1735  	for i := range a {
  1736  		if a[i] < 0 {
  1737  			a[i] = -a[i]
  1738  		}
  1739  	}
  1740  }
  1741  
  1742  func AbsI8(a []int8) {
  1743  	for i := range a {
  1744  		if a[i] < 0 {
  1745  			a[i] = -a[i]
  1746  		}
  1747  	}
  1748  }
  1749  
  1750  func AbsI16(a []int16) {
  1751  	for i := range a {
  1752  		if a[i] < 0 {
  1753  			a[i] = -a[i]
  1754  		}
  1755  	}
  1756  }
  1757  
  1758  func AbsI32(a []int32) {
  1759  	for i := range a {
  1760  		if a[i] < 0 {
  1761  			a[i] = -a[i]
  1762  		}
  1763  	}
  1764  }
  1765  
  1766  func AbsI64(a []int64) {
  1767  	for i := range a {
  1768  		if a[i] < 0 {
  1769  			a[i] = -a[i]
  1770  		}
  1771  	}
  1772  }
  1773  
  1774  func AbsF32(a []float32) {
  1775  	for i := range a {
  1776  		a[i] = math32.Abs(a[i])
  1777  	}
  1778  }
  1779  
  1780  func AbsF64(a []float64) {
  1781  	for i := range a {
  1782  		a[i] = math.Abs(a[i])
  1783  	}
  1784  }
  1785  
  1786  func SignI(a []int) {
  1787  	for i := range a {
  1788  		if a[i] < 0 {
  1789  			a[i] = -1
  1790  		} else if a[i] > 0 {
  1791  			a[i] = 1
  1792  		}
  1793  	}
  1794  }
  1795  
  1796  func SignI8(a []int8) {
  1797  	for i := range a {
  1798  		if a[i] < 0 {
  1799  			a[i] = -1
  1800  		} else if a[i] > 0 {
  1801  			a[i] = 1
  1802  		}
  1803  	}
  1804  }
  1805  
  1806  func SignI16(a []int16) {
  1807  	for i := range a {
  1808  		if a[i] < 0 {
  1809  			a[i] = -1
  1810  		} else if a[i] > 0 {
  1811  			a[i] = 1
  1812  		}
  1813  	}
  1814  }
  1815  
  1816  func SignI32(a []int32) {
  1817  	for i := range a {
  1818  		if a[i] < 0 {
  1819  			a[i] = -1
  1820  		} else if a[i] > 0 {
  1821  			a[i] = 1
  1822  		}
  1823  	}
  1824  }
  1825  
  1826  func SignI64(a []int64) {
  1827  	for i := range a {
  1828  		if a[i] < 0 {
  1829  			a[i] = -1
  1830  		} else if a[i] > 0 {
  1831  			a[i] = 1
  1832  		}
  1833  	}
  1834  }
  1835  
  1836  func SignF32(a []float32) {
  1837  	for i := range a {
  1838  		if a[i] < 0 {
  1839  			a[i] = -1
  1840  		} else if a[i] > 0 {
  1841  			a[i] = 1
  1842  		}
  1843  	}
  1844  }
  1845  
  1846  func SignF64(a []float64) {
  1847  	for i := range a {
  1848  		if a[i] < 0 {
  1849  			a[i] = -1
  1850  		} else if a[i] > 0 {
  1851  			a[i] = 1
  1852  		}
  1853  	}
  1854  }
  1855  
  1856  func AbsIterI(a []int, ait Iterator) (err error) {
  1857  	var i int
  1858  	var validi bool
  1859  	for {
  1860  		if i, validi, err = ait.NextValidity(); err != nil {
  1861  			err = handleNoOp(err)
  1862  			break
  1863  		}
  1864  		if validi {
  1865  			if a[i] < 0 {
  1866  				a[i] = -a[i]
  1867  			}
  1868  		}
  1869  	}
  1870  	return
  1871  }
  1872  
  1873  func AbsIterI8(a []int8, ait Iterator) (err error) {
  1874  	var i int
  1875  	var validi bool
  1876  	for {
  1877  		if i, validi, err = ait.NextValidity(); err != nil {
  1878  			err = handleNoOp(err)
  1879  			break
  1880  		}
  1881  		if validi {
  1882  			if a[i] < 0 {
  1883  				a[i] = -a[i]
  1884  			}
  1885  		}
  1886  	}
  1887  	return
  1888  }
  1889  
  1890  func AbsIterI16(a []int16, ait Iterator) (err error) {
  1891  	var i int
  1892  	var validi bool
  1893  	for {
  1894  		if i, validi, err = ait.NextValidity(); err != nil {
  1895  			err = handleNoOp(err)
  1896  			break
  1897  		}
  1898  		if validi {
  1899  			if a[i] < 0 {
  1900  				a[i] = -a[i]
  1901  			}
  1902  		}
  1903  	}
  1904  	return
  1905  }
  1906  
  1907  func AbsIterI32(a []int32, ait Iterator) (err error) {
  1908  	var i int
  1909  	var validi bool
  1910  	for {
  1911  		if i, validi, err = ait.NextValidity(); err != nil {
  1912  			err = handleNoOp(err)
  1913  			break
  1914  		}
  1915  		if validi {
  1916  			if a[i] < 0 {
  1917  				a[i] = -a[i]
  1918  			}
  1919  		}
  1920  	}
  1921  	return
  1922  }
  1923  
  1924  func AbsIterI64(a []int64, ait Iterator) (err error) {
  1925  	var i int
  1926  	var validi bool
  1927  	for {
  1928  		if i, validi, err = ait.NextValidity(); err != nil {
  1929  			err = handleNoOp(err)
  1930  			break
  1931  		}
  1932  		if validi {
  1933  			if a[i] < 0 {
  1934  				a[i] = -a[i]
  1935  			}
  1936  		}
  1937  	}
  1938  	return
  1939  }
  1940  
  1941  func AbsIterF32(a []float32, ait Iterator) (err error) {
  1942  	var i int
  1943  	var validi bool
  1944  	for {
  1945  		if i, validi, err = ait.NextValidity(); err != nil {
  1946  			err = handleNoOp(err)
  1947  			break
  1948  		}
  1949  		if validi {
  1950  			a[i] = math32.Abs(a[i])
  1951  		}
  1952  	}
  1953  	return
  1954  }
  1955  
  1956  func AbsIterF64(a []float64, ait Iterator) (err error) {
  1957  	var i int
  1958  	var validi bool
  1959  	for {
  1960  		if i, validi, err = ait.NextValidity(); err != nil {
  1961  			err = handleNoOp(err)
  1962  			break
  1963  		}
  1964  		if validi {
  1965  			a[i] = math.Abs(a[i])
  1966  		}
  1967  	}
  1968  	return
  1969  }
  1970  
  1971  func SignIterI(a []int, ait Iterator) (err error) {
  1972  	var i int
  1973  	var validi bool
  1974  	for {
  1975  		if i, validi, err = ait.NextValidity(); err != nil {
  1976  			err = handleNoOp(err)
  1977  			break
  1978  		}
  1979  		if validi {
  1980  			if a[i] < 0 {
  1981  				a[i] = -1
  1982  			} else if a[i] > 0 {
  1983  				a[i] = 1
  1984  			}
  1985  		}
  1986  	}
  1987  	return
  1988  }
  1989  
  1990  func SignIterI8(a []int8, ait Iterator) (err error) {
  1991  	var i int
  1992  	var validi bool
  1993  	for {
  1994  		if i, validi, err = ait.NextValidity(); err != nil {
  1995  			err = handleNoOp(err)
  1996  			break
  1997  		}
  1998  		if validi {
  1999  			if a[i] < 0 {
  2000  				a[i] = -1
  2001  			} else if a[i] > 0 {
  2002  				a[i] = 1
  2003  			}
  2004  		}
  2005  	}
  2006  	return
  2007  }
  2008  
  2009  func SignIterI16(a []int16, ait Iterator) (err error) {
  2010  	var i int
  2011  	var validi bool
  2012  	for {
  2013  		if i, validi, err = ait.NextValidity(); err != nil {
  2014  			err = handleNoOp(err)
  2015  			break
  2016  		}
  2017  		if validi {
  2018  			if a[i] < 0 {
  2019  				a[i] = -1
  2020  			} else if a[i] > 0 {
  2021  				a[i] = 1
  2022  			}
  2023  		}
  2024  	}
  2025  	return
  2026  }
  2027  
  2028  func SignIterI32(a []int32, ait Iterator) (err error) {
  2029  	var i int
  2030  	var validi bool
  2031  	for {
  2032  		if i, validi, err = ait.NextValidity(); err != nil {
  2033  			err = handleNoOp(err)
  2034  			break
  2035  		}
  2036  		if validi {
  2037  			if a[i] < 0 {
  2038  				a[i] = -1
  2039  			} else if a[i] > 0 {
  2040  				a[i] = 1
  2041  			}
  2042  		}
  2043  	}
  2044  	return
  2045  }
  2046  
  2047  func SignIterI64(a []int64, ait Iterator) (err error) {
  2048  	var i int
  2049  	var validi bool
  2050  	for {
  2051  		if i, validi, err = ait.NextValidity(); err != nil {
  2052  			err = handleNoOp(err)
  2053  			break
  2054  		}
  2055  		if validi {
  2056  			if a[i] < 0 {
  2057  				a[i] = -1
  2058  			} else if a[i] > 0 {
  2059  				a[i] = 1
  2060  			}
  2061  		}
  2062  	}
  2063  	return
  2064  }
  2065  
  2066  func SignIterF32(a []float32, ait Iterator) (err error) {
  2067  	var i int
  2068  	var validi bool
  2069  	for {
  2070  		if i, validi, err = ait.NextValidity(); err != nil {
  2071  			err = handleNoOp(err)
  2072  			break
  2073  		}
  2074  		if validi {
  2075  			if a[i] < 0 {
  2076  				a[i] = -1
  2077  			} else if a[i] > 0 {
  2078  				a[i] = 1
  2079  			}
  2080  		}
  2081  	}
  2082  	return
  2083  }
  2084  
  2085  func SignIterF64(a []float64, ait Iterator) (err error) {
  2086  	var i int
  2087  	var validi bool
  2088  	for {
  2089  		if i, validi, err = ait.NextValidity(); err != nil {
  2090  			err = handleNoOp(err)
  2091  			break
  2092  		}
  2093  		if validi {
  2094  			if a[i] < 0 {
  2095  				a[i] = -1
  2096  			} else if a[i] > 0 {
  2097  				a[i] = 1
  2098  			}
  2099  		}
  2100  	}
  2101  	return
  2102  }
  2103  
  2104  func ClampI(a []int, min int, max int) {
  2105  	for i := range a {
  2106  		if a[i] < min {
  2107  			a[i] = min
  2108  			continue
  2109  		}
  2110  		if a[i] > max {
  2111  			a[i] = max
  2112  		}
  2113  	}
  2114  }
  2115  
  2116  func ClampI8(a []int8, min int8, max int8) {
  2117  	for i := range a {
  2118  		if a[i] < min {
  2119  			a[i] = min
  2120  			continue
  2121  		}
  2122  		if a[i] > max {
  2123  			a[i] = max
  2124  		}
  2125  	}
  2126  }
  2127  
  2128  func ClampI16(a []int16, min int16, max int16) {
  2129  	for i := range a {
  2130  		if a[i] < min {
  2131  			a[i] = min
  2132  			continue
  2133  		}
  2134  		if a[i] > max {
  2135  			a[i] = max
  2136  		}
  2137  	}
  2138  }
  2139  
  2140  func ClampI32(a []int32, min int32, max int32) {
  2141  	for i := range a {
  2142  		if a[i] < min {
  2143  			a[i] = min
  2144  			continue
  2145  		}
  2146  		if a[i] > max {
  2147  			a[i] = max
  2148  		}
  2149  	}
  2150  }
  2151  
  2152  func ClampI64(a []int64, min int64, max int64) {
  2153  	for i := range a {
  2154  		if a[i] < min {
  2155  			a[i] = min
  2156  			continue
  2157  		}
  2158  		if a[i] > max {
  2159  			a[i] = max
  2160  		}
  2161  	}
  2162  }
  2163  
  2164  func ClampU(a []uint, min uint, max uint) {
  2165  	for i := range a {
  2166  		if a[i] < min {
  2167  			a[i] = min
  2168  			continue
  2169  		}
  2170  		if a[i] > max {
  2171  			a[i] = max
  2172  		}
  2173  	}
  2174  }
  2175  
  2176  func ClampU8(a []uint8, min uint8, max uint8) {
  2177  	for i := range a {
  2178  		if a[i] < min {
  2179  			a[i] = min
  2180  			continue
  2181  		}
  2182  		if a[i] > max {
  2183  			a[i] = max
  2184  		}
  2185  	}
  2186  }
  2187  
  2188  func ClampU16(a []uint16, min uint16, max uint16) {
  2189  	for i := range a {
  2190  		if a[i] < min {
  2191  			a[i] = min
  2192  			continue
  2193  		}
  2194  		if a[i] > max {
  2195  			a[i] = max
  2196  		}
  2197  	}
  2198  }
  2199  
  2200  func ClampU32(a []uint32, min uint32, max uint32) {
  2201  	for i := range a {
  2202  		if a[i] < min {
  2203  			a[i] = min
  2204  			continue
  2205  		}
  2206  		if a[i] > max {
  2207  			a[i] = max
  2208  		}
  2209  	}
  2210  }
  2211  
  2212  func ClampU64(a []uint64, min uint64, max uint64) {
  2213  	for i := range a {
  2214  		if a[i] < min {
  2215  			a[i] = min
  2216  			continue
  2217  		}
  2218  		if a[i] > max {
  2219  			a[i] = max
  2220  		}
  2221  	}
  2222  }
  2223  
  2224  func ClampF32(a []float32, min float32, max float32) {
  2225  	for i := range a {
  2226  		if a[i] < min || math32.IsInf(a[i], -1) {
  2227  			a[i] = min
  2228  			continue
  2229  		}
  2230  		if a[i] > max || math32.IsInf(a[i], 1) {
  2231  			a[i] = max
  2232  		}
  2233  	}
  2234  }
  2235  
  2236  func ClampF64(a []float64, min float64, max float64) {
  2237  	for i := range a {
  2238  		if a[i] < min || math.IsInf(a[i], -1) {
  2239  			a[i] = min
  2240  			continue
  2241  		}
  2242  		if a[i] > max || math.IsInf(a[i], 1) {
  2243  			a[i] = max
  2244  		}
  2245  	}
  2246  }
  2247  
  2248  func ClampIterI(a []int, ait Iterator, min int, max int) (err error) {
  2249  	var i int
  2250  	var validi bool
  2251  	for {
  2252  		if i, validi, err = ait.NextValidity(); err != nil {
  2253  			err = handleNoOp(err)
  2254  			break
  2255  		}
  2256  		if validi {
  2257  			if a[i] < min {
  2258  				a[i] = min
  2259  				continue
  2260  			}
  2261  			if a[i] > max {
  2262  				a[i] = max
  2263  			}
  2264  		}
  2265  	}
  2266  	return
  2267  }
  2268  
  2269  func ClampIterI8(a []int8, ait Iterator, min int8, max int8) (err error) {
  2270  	var i int
  2271  	var validi bool
  2272  	for {
  2273  		if i, validi, err = ait.NextValidity(); err != nil {
  2274  			err = handleNoOp(err)
  2275  			break
  2276  		}
  2277  		if validi {
  2278  			if a[i] < min {
  2279  				a[i] = min
  2280  				continue
  2281  			}
  2282  			if a[i] > max {
  2283  				a[i] = max
  2284  			}
  2285  		}
  2286  	}
  2287  	return
  2288  }
  2289  
  2290  func ClampIterI16(a []int16, ait Iterator, min int16, max int16) (err error) {
  2291  	var i int
  2292  	var validi bool
  2293  	for {
  2294  		if i, validi, err = ait.NextValidity(); err != nil {
  2295  			err = handleNoOp(err)
  2296  			break
  2297  		}
  2298  		if validi {
  2299  			if a[i] < min {
  2300  				a[i] = min
  2301  				continue
  2302  			}
  2303  			if a[i] > max {
  2304  				a[i] = max
  2305  			}
  2306  		}
  2307  	}
  2308  	return
  2309  }
  2310  
  2311  func ClampIterI32(a []int32, ait Iterator, min int32, max int32) (err error) {
  2312  	var i int
  2313  	var validi bool
  2314  	for {
  2315  		if i, validi, err = ait.NextValidity(); err != nil {
  2316  			err = handleNoOp(err)
  2317  			break
  2318  		}
  2319  		if validi {
  2320  			if a[i] < min {
  2321  				a[i] = min
  2322  				continue
  2323  			}
  2324  			if a[i] > max {
  2325  				a[i] = max
  2326  			}
  2327  		}
  2328  	}
  2329  	return
  2330  }
  2331  
  2332  func ClampIterI64(a []int64, ait Iterator, min int64, max int64) (err error) {
  2333  	var i int
  2334  	var validi bool
  2335  	for {
  2336  		if i, validi, err = ait.NextValidity(); err != nil {
  2337  			err = handleNoOp(err)
  2338  			break
  2339  		}
  2340  		if validi {
  2341  			if a[i] < min {
  2342  				a[i] = min
  2343  				continue
  2344  			}
  2345  			if a[i] > max {
  2346  				a[i] = max
  2347  			}
  2348  		}
  2349  	}
  2350  	return
  2351  }
  2352  
  2353  func ClampIterU(a []uint, ait Iterator, min uint, max uint) (err error) {
  2354  	var i int
  2355  	var validi bool
  2356  	for {
  2357  		if i, validi, err = ait.NextValidity(); err != nil {
  2358  			err = handleNoOp(err)
  2359  			break
  2360  		}
  2361  		if validi {
  2362  			if a[i] < min {
  2363  				a[i] = min
  2364  				continue
  2365  			}
  2366  			if a[i] > max {
  2367  				a[i] = max
  2368  			}
  2369  		}
  2370  	}
  2371  	return
  2372  }
  2373  
  2374  func ClampIterU8(a []uint8, ait Iterator, min uint8, max uint8) (err error) {
  2375  	var i int
  2376  	var validi bool
  2377  	for {
  2378  		if i, validi, err = ait.NextValidity(); err != nil {
  2379  			err = handleNoOp(err)
  2380  			break
  2381  		}
  2382  		if validi {
  2383  			if a[i] < min {
  2384  				a[i] = min
  2385  				continue
  2386  			}
  2387  			if a[i] > max {
  2388  				a[i] = max
  2389  			}
  2390  		}
  2391  	}
  2392  	return
  2393  }
  2394  
  2395  func ClampIterU16(a []uint16, ait Iterator, min uint16, max uint16) (err error) {
  2396  	var i int
  2397  	var validi bool
  2398  	for {
  2399  		if i, validi, err = ait.NextValidity(); err != nil {
  2400  			err = handleNoOp(err)
  2401  			break
  2402  		}
  2403  		if validi {
  2404  			if a[i] < min {
  2405  				a[i] = min
  2406  				continue
  2407  			}
  2408  			if a[i] > max {
  2409  				a[i] = max
  2410  			}
  2411  		}
  2412  	}
  2413  	return
  2414  }
  2415  
  2416  func ClampIterU32(a []uint32, ait Iterator, min uint32, max uint32) (err error) {
  2417  	var i int
  2418  	var validi bool
  2419  	for {
  2420  		if i, validi, err = ait.NextValidity(); err != nil {
  2421  			err = handleNoOp(err)
  2422  			break
  2423  		}
  2424  		if validi {
  2425  			if a[i] < min {
  2426  				a[i] = min
  2427  				continue
  2428  			}
  2429  			if a[i] > max {
  2430  				a[i] = max
  2431  			}
  2432  		}
  2433  	}
  2434  	return
  2435  }
  2436  
  2437  func ClampIterU64(a []uint64, ait Iterator, min uint64, max uint64) (err error) {
  2438  	var i int
  2439  	var validi bool
  2440  	for {
  2441  		if i, validi, err = ait.NextValidity(); err != nil {
  2442  			err = handleNoOp(err)
  2443  			break
  2444  		}
  2445  		if validi {
  2446  			if a[i] < min {
  2447  				a[i] = min
  2448  				continue
  2449  			}
  2450  			if a[i] > max {
  2451  				a[i] = max
  2452  			}
  2453  		}
  2454  	}
  2455  	return
  2456  }
  2457  
  2458  func ClampIterF32(a []float32, ait Iterator, min float32, max float32) (err error) {
  2459  	var i int
  2460  	var validi bool
  2461  	for {
  2462  		if i, validi, err = ait.NextValidity(); err != nil {
  2463  			err = handleNoOp(err)
  2464  			break
  2465  		}
  2466  		if validi {
  2467  			if a[i] < min || math32.IsInf(a[i], -1) {
  2468  				a[i] = min
  2469  				continue
  2470  			}
  2471  			if a[i] > max || math32.IsInf(a[i], 1) {
  2472  				a[i] = max
  2473  			}
  2474  		}
  2475  	}
  2476  	return
  2477  }
  2478  
  2479  func ClampIterF64(a []float64, ait Iterator, min float64, max float64) (err error) {
  2480  	var i int
  2481  	var validi bool
  2482  	for {
  2483  		if i, validi, err = ait.NextValidity(); err != nil {
  2484  			err = handleNoOp(err)
  2485  			break
  2486  		}
  2487  		if validi {
  2488  			if a[i] < min || math.IsInf(a[i], -1) {
  2489  				a[i] = min
  2490  				continue
  2491  			}
  2492  			if a[i] > max || math.IsInf(a[i], 1) {
  2493  				a[i] = max
  2494  			}
  2495  		}
  2496  	}
  2497  	return
  2498  }