gorgonia.org/tensor@v0.9.24/internal/execution/reduction_specialization.go (about)

     1  // Code generated by genlib2. DO NOT EDIT.
     2  
     3  package execution
     4  
     5  import (
     6  	"reflect"
     7  
     8  	"github.com/pkg/errors"
     9  	"gorgonia.org/tensor/internal/storage"
    10  )
    11  
    12  func MonotonicSum(t reflect.Type, a *storage.Header) (retVal interface{}, err error) {
    13  	switch t {
    14  	case Int:
    15  		retVal = SumI(a.Ints())
    16  		return
    17  	case Int8:
    18  		retVal = SumI8(a.Int8s())
    19  		return
    20  	case Int16:
    21  		retVal = SumI16(a.Int16s())
    22  		return
    23  	case Int32:
    24  		retVal = SumI32(a.Int32s())
    25  		return
    26  	case Int64:
    27  		retVal = SumI64(a.Int64s())
    28  		return
    29  	case Uint:
    30  		retVal = SumU(a.Uints())
    31  		return
    32  	case Uint8:
    33  		retVal = SumU8(a.Uint8s())
    34  		return
    35  	case Uint16:
    36  		retVal = SumU16(a.Uint16s())
    37  		return
    38  	case Uint32:
    39  		retVal = SumU32(a.Uint32s())
    40  		return
    41  	case Uint64:
    42  		retVal = SumU64(a.Uint64s())
    43  		return
    44  	case Float32:
    45  		retVal = SumF32(a.Float32s())
    46  		return
    47  	case Float64:
    48  		retVal = SumF64(a.Float64s())
    49  		return
    50  	case Complex64:
    51  		retVal = SumC64(a.Complex64s())
    52  		return
    53  	case Complex128:
    54  		retVal = SumC128(a.Complex128s())
    55  		return
    56  	default:
    57  		err = errors.Errorf("Cannot perform Sum on %v", t)
    58  		return
    59  	}
    60  }
    61  
    62  func SumMethods(t reflect.Type) (firstFn, lasFn, defaultFn interface{}, err error) {
    63  	switch t {
    64  	case Int:
    65  		return VecAddI, SumI, AddI, nil
    66  	case Int8:
    67  		return VecAddI8, SumI8, AddI8, nil
    68  	case Int16:
    69  		return VecAddI16, SumI16, AddI16, nil
    70  	case Int32:
    71  		return VecAddI32, SumI32, AddI32, nil
    72  	case Int64:
    73  		return VecAddI64, SumI64, AddI64, nil
    74  	case Uint:
    75  		return VecAddU, SumU, AddU, nil
    76  	case Uint8:
    77  		return VecAddU8, SumU8, AddU8, nil
    78  	case Uint16:
    79  		return VecAddU16, SumU16, AddU16, nil
    80  	case Uint32:
    81  		return VecAddU32, SumU32, AddU32, nil
    82  	case Uint64:
    83  		return VecAddU64, SumU64, AddU64, nil
    84  	case Float32:
    85  		return VecAddF32, SumF32, AddF32, nil
    86  	case Float64:
    87  		return VecAddF64, SumF64, AddF64, nil
    88  	case Complex64:
    89  		return VecAddC64, SumC64, AddC64, nil
    90  	case Complex128:
    91  		return VecAddC128, SumC128, AddC128, nil
    92  	default:
    93  		return nil, nil, nil, errors.Errorf("No methods found for Sum for %v", t)
    94  	}
    95  }
    96  
    97  func MonotonicMax(t reflect.Type, a *storage.Header) (retVal interface{}, err error) {
    98  	switch t {
    99  	case Int:
   100  		retVal = SliceMaxI(a.Ints())
   101  		return
   102  	case Int8:
   103  		retVal = SliceMaxI8(a.Int8s())
   104  		return
   105  	case Int16:
   106  		retVal = SliceMaxI16(a.Int16s())
   107  		return
   108  	case Int32:
   109  		retVal = SliceMaxI32(a.Int32s())
   110  		return
   111  	case Int64:
   112  		retVal = SliceMaxI64(a.Int64s())
   113  		return
   114  	case Uint:
   115  		retVal = SliceMaxU(a.Uints())
   116  		return
   117  	case Uint8:
   118  		retVal = SliceMaxU8(a.Uint8s())
   119  		return
   120  	case Uint16:
   121  		retVal = SliceMaxU16(a.Uint16s())
   122  		return
   123  	case Uint32:
   124  		retVal = SliceMaxU32(a.Uint32s())
   125  		return
   126  	case Uint64:
   127  		retVal = SliceMaxU64(a.Uint64s())
   128  		return
   129  	case Float32:
   130  		retVal = SliceMaxF32(a.Float32s())
   131  		return
   132  	case Float64:
   133  		retVal = SliceMaxF64(a.Float64s())
   134  		return
   135  	default:
   136  		err = errors.Errorf("Cannot perform Max on %v", t)
   137  		return
   138  	}
   139  }
   140  
   141  func MaxMethods(t reflect.Type) (firstFn, lasFn, defaultFn interface{}, err error) {
   142  	switch t {
   143  	case Int:
   144  		return VecMaxI, SliceMaxI, MaxI, nil
   145  	case Int8:
   146  		return VecMaxI8, SliceMaxI8, MaxI8, nil
   147  	case Int16:
   148  		return VecMaxI16, SliceMaxI16, MaxI16, nil
   149  	case Int32:
   150  		return VecMaxI32, SliceMaxI32, MaxI32, nil
   151  	case Int64:
   152  		return VecMaxI64, SliceMaxI64, MaxI64, nil
   153  	case Uint:
   154  		return VecMaxU, SliceMaxU, MaxU, nil
   155  	case Uint8:
   156  		return VecMaxU8, SliceMaxU8, MaxU8, nil
   157  	case Uint16:
   158  		return VecMaxU16, SliceMaxU16, MaxU16, nil
   159  	case Uint32:
   160  		return VecMaxU32, SliceMaxU32, MaxU32, nil
   161  	case Uint64:
   162  		return VecMaxU64, SliceMaxU64, MaxU64, nil
   163  	case Float32:
   164  		return VecMaxF32, SliceMaxF32, MaxF32, nil
   165  	case Float64:
   166  		return VecMaxF64, SliceMaxF64, MaxF64, nil
   167  	default:
   168  		return nil, nil, nil, errors.Errorf("No methods found for Max for %v", t)
   169  	}
   170  }
   171  
   172  func MonotonicMin(t reflect.Type, a *storage.Header) (retVal interface{}, err error) {
   173  	switch t {
   174  	case Int:
   175  		retVal = SliceMinI(a.Ints())
   176  		return
   177  	case Int8:
   178  		retVal = SliceMinI8(a.Int8s())
   179  		return
   180  	case Int16:
   181  		retVal = SliceMinI16(a.Int16s())
   182  		return
   183  	case Int32:
   184  		retVal = SliceMinI32(a.Int32s())
   185  		return
   186  	case Int64:
   187  		retVal = SliceMinI64(a.Int64s())
   188  		return
   189  	case Uint:
   190  		retVal = SliceMinU(a.Uints())
   191  		return
   192  	case Uint8:
   193  		retVal = SliceMinU8(a.Uint8s())
   194  		return
   195  	case Uint16:
   196  		retVal = SliceMinU16(a.Uint16s())
   197  		return
   198  	case Uint32:
   199  		retVal = SliceMinU32(a.Uint32s())
   200  		return
   201  	case Uint64:
   202  		retVal = SliceMinU64(a.Uint64s())
   203  		return
   204  	case Float32:
   205  		retVal = SliceMinF32(a.Float32s())
   206  		return
   207  	case Float64:
   208  		retVal = SliceMinF64(a.Float64s())
   209  		return
   210  	default:
   211  		err = errors.Errorf("Cannot perform Min on %v", t)
   212  		return
   213  	}
   214  }
   215  
   216  func MinMethods(t reflect.Type) (firstFn, lasFn, defaultFn interface{}, err error) {
   217  	switch t {
   218  	case Int:
   219  		return VecMinI, SliceMinI, MinI, nil
   220  	case Int8:
   221  		return VecMinI8, SliceMinI8, MinI8, nil
   222  	case Int16:
   223  		return VecMinI16, SliceMinI16, MinI16, nil
   224  	case Int32:
   225  		return VecMinI32, SliceMinI32, MinI32, nil
   226  	case Int64:
   227  		return VecMinI64, SliceMinI64, MinI64, nil
   228  	case Uint:
   229  		return VecMinU, SliceMinU, MinU, nil
   230  	case Uint8:
   231  		return VecMinU8, SliceMinU8, MinU8, nil
   232  	case Uint16:
   233  		return VecMinU16, SliceMinU16, MinU16, nil
   234  	case Uint32:
   235  		return VecMinU32, SliceMinU32, MinU32, nil
   236  	case Uint64:
   237  		return VecMinU64, SliceMinU64, MinU64, nil
   238  	case Float32:
   239  		return VecMinF32, SliceMinF32, MinF32, nil
   240  	case Float64:
   241  		return VecMinF64, SliceMinF64, MinF64, nil
   242  	default:
   243  		return nil, nil, nil, errors.Errorf("No methods found for Min for %v", t)
   244  	}
   245  }