gorgonia.org/tensor@v0.9.24/dense_arith.go (about) 1 // Code generated by genlib2. DO NOT EDIT. 2 3 package tensor 4 5 import "github.com/pkg/errors" 6 7 // Add performs t + other elementwise. Both t and other must have the same shape. 8 // Acceptable FuncOpts are: UseUnsafe(), WithReuse(T), WithIncr(T) 9 func (t *Dense) Add(other *Dense, opts ...FuncOpt) (retVal *Dense, err error) { 10 11 var ret Tensor 12 if t.oe != nil { 13 if ret, err = t.oe.Add(t, other, opts...); err != nil { 14 return nil, errors.Wrapf(err, "Unable to do Add()") 15 } 16 if retVal, err = assertDense(ret); err != nil { 17 return nil, errors.Wrapf(err, opFail, "Add") 18 } 19 return 20 } 21 22 if adder, ok := t.e.(Adder); ok { 23 if ret, err = adder.Add(t, other, opts...); err != nil { 24 return nil, errors.Wrapf(err, "Unable to do Add()") 25 } 26 if retVal, err = assertDense(ret); err != nil { 27 return nil, errors.Wrapf(err, opFail, "Add") 28 } 29 return 30 } 31 return nil, errors.Errorf("Engine does not support Add()") 32 } 33 34 // Sub performs t - other elementwise. Both t and other must have the same shape. 35 // Acceptable FuncOpts are: UseUnsafe(), WithReuse(T), WithIncr(T) 36 func (t *Dense) Sub(other *Dense, opts ...FuncOpt) (retVal *Dense, err error) { 37 38 var ret Tensor 39 if t.oe != nil { 40 if ret, err = t.oe.Sub(t, other, opts...); err != nil { 41 return nil, errors.Wrapf(err, "Unable to do Sub()") 42 } 43 if retVal, err = assertDense(ret); err != nil { 44 return nil, errors.Wrapf(err, opFail, "Sub") 45 } 46 return 47 } 48 49 if suber, ok := t.e.(Suber); ok { 50 if ret, err = suber.Sub(t, other, opts...); err != nil { 51 return nil, errors.Wrapf(err, "Unable to do Sub()") 52 } 53 if retVal, err = assertDense(ret); err != nil { 54 return nil, errors.Wrapf(err, opFail, "Sub") 55 } 56 return 57 } 58 return nil, errors.Errorf("Engine does not support Sub()") 59 } 60 61 // Mul performs t × other elementwise. Both t and other must have the same shape. 62 // Acceptable FuncOpts are: UseUnsafe(), WithReuse(T), WithIncr(T) 63 func (t *Dense) Mul(other *Dense, opts ...FuncOpt) (retVal *Dense, err error) { 64 65 var ret Tensor 66 if t.oe != nil { 67 if ret, err = t.oe.Mul(t, other, opts...); err != nil { 68 return nil, errors.Wrapf(err, "Unable to do Mul()") 69 } 70 if retVal, err = assertDense(ret); err != nil { 71 return nil, errors.Wrapf(err, opFail, "Mul") 72 } 73 return 74 } 75 76 if muler, ok := t.e.(Muler); ok { 77 if ret, err = muler.Mul(t, other, opts...); err != nil { 78 return nil, errors.Wrapf(err, "Unable to do Mul()") 79 } 80 if retVal, err = assertDense(ret); err != nil { 81 return nil, errors.Wrapf(err, opFail, "Mul") 82 } 83 return 84 } 85 return nil, errors.Errorf("Engine does not support Mul()") 86 } 87 88 // Div performs t ÷ other elementwise. Both t and other must have the same shape. 89 // Acceptable FuncOpts are: UseUnsafe(), WithReuse(T), WithIncr(T) 90 func (t *Dense) Div(other *Dense, opts ...FuncOpt) (retVal *Dense, err error) { 91 92 var ret Tensor 93 if t.oe != nil { 94 if ret, err = t.oe.Div(t, other, opts...); err != nil { 95 return nil, errors.Wrapf(err, "Unable to do Div()") 96 } 97 if retVal, err = assertDense(ret); err != nil { 98 return nil, errors.Wrapf(err, opFail, "Div") 99 } 100 return 101 } 102 103 if diver, ok := t.e.(Diver); ok { 104 if ret, err = diver.Div(t, other, opts...); err != nil { 105 return nil, errors.Wrapf(err, "Unable to do Div()") 106 } 107 if retVal, err = assertDense(ret); err != nil { 108 return nil, errors.Wrapf(err, opFail, "Div") 109 } 110 return 111 } 112 return nil, errors.Errorf("Engine does not support Div()") 113 } 114 115 // Pow performs t ^ other elementwise. Both t and other must have the same shape. 116 // Acceptable FuncOpts are: UseUnsafe(), WithReuse(T), WithIncr(T) 117 func (t *Dense) Pow(other *Dense, opts ...FuncOpt) (retVal *Dense, err error) { 118 119 var ret Tensor 120 if t.oe != nil { 121 if ret, err = t.oe.Pow(t, other, opts...); err != nil { 122 return nil, errors.Wrapf(err, "Unable to do Pow()") 123 } 124 if retVal, err = assertDense(ret); err != nil { 125 return nil, errors.Wrapf(err, opFail, "Pow") 126 } 127 return 128 } 129 130 if power, ok := t.e.(Power); ok { 131 if ret, err = power.Pow(t, other, opts...); err != nil { 132 return nil, errors.Wrapf(err, "Unable to do Pow()") 133 } 134 if retVal, err = assertDense(ret); err != nil { 135 return nil, errors.Wrapf(err, opFail, "Pow") 136 } 137 return 138 } 139 return nil, errors.Errorf("Engine does not support Pow()") 140 } 141 142 // Mod performs t % other elementwise. Both t and other must have the same shape. 143 // Acceptable FuncOpts are: UseUnsafe(), WithReuse(T), WithIncr(T) 144 func (t *Dense) Mod(other *Dense, opts ...FuncOpt) (retVal *Dense, err error) { 145 146 var ret Tensor 147 if t.oe != nil { 148 if ret, err = t.oe.Mod(t, other, opts...); err != nil { 149 return nil, errors.Wrapf(err, "Unable to do Mod()") 150 } 151 if retVal, err = assertDense(ret); err != nil { 152 return nil, errors.Wrapf(err, opFail, "Mod") 153 } 154 return 155 } 156 157 if moder, ok := t.e.(Moder); ok { 158 if ret, err = moder.Mod(t, other, opts...); err != nil { 159 return nil, errors.Wrapf(err, "Unable to do Mod()") 160 } 161 if retVal, err = assertDense(ret); err != nil { 162 return nil, errors.Wrapf(err, opFail, "Mod") 163 } 164 return 165 } 166 return nil, errors.Errorf("Engine does not support Mod()") 167 } 168 169 // AddScalar performs t + other elementwise. The leftTensor parameter indicates if the tensor is the left operand. Only scalar types are accepted in other. 170 // Acceptable FuncOpts are: UseUnsafe(), WithReuse(T), WithIncr(T) 171 func (t *Dense) AddScalar(other interface{}, leftTensor bool, opts ...FuncOpt) (retVal *Dense, err error) { 172 var ret Tensor 173 if t.oe != nil { 174 if ret, err = t.oe.AddScalar(t, other, leftTensor, opts...); err != nil { 175 return nil, errors.Wrapf(err, "Unable to do AddScalar()") 176 } 177 if retVal, err = assertDense(ret); err != nil { 178 return nil, errors.Wrapf(err, opFail, "AddScalar") 179 } 180 return 181 } 182 183 if adder, ok := t.e.(Adder); ok { 184 if ret, err = adder.AddScalar(t, other, leftTensor, opts...); err != nil { 185 return nil, errors.Wrapf(err, "Unable to do AddScalar()") 186 } 187 if retVal, err = assertDense(ret); err != nil { 188 return nil, errors.Wrapf(err, opFail, "AddScalar") 189 } 190 return 191 } 192 return nil, errors.Errorf("Engine does not support AddScalar()") 193 } 194 195 // SubScalar performs t - other elementwise. The leftTensor parameter indicates if the tensor is the left operand. Only scalar types are accepted in other. 196 // Acceptable FuncOpts are: UseUnsafe(), WithReuse(T), WithIncr(T) 197 func (t *Dense) SubScalar(other interface{}, leftTensor bool, opts ...FuncOpt) (retVal *Dense, err error) { 198 var ret Tensor 199 if t.oe != nil { 200 if ret, err = t.oe.SubScalar(t, other, leftTensor, opts...); err != nil { 201 return nil, errors.Wrapf(err, "Unable to do SubScalar()") 202 } 203 if retVal, err = assertDense(ret); err != nil { 204 return nil, errors.Wrapf(err, opFail, "SubScalar") 205 } 206 return 207 } 208 209 if suber, ok := t.e.(Suber); ok { 210 if ret, err = suber.SubScalar(t, other, leftTensor, opts...); err != nil { 211 return nil, errors.Wrapf(err, "Unable to do SubScalar()") 212 } 213 if retVal, err = assertDense(ret); err != nil { 214 return nil, errors.Wrapf(err, opFail, "SubScalar") 215 } 216 return 217 } 218 return nil, errors.Errorf("Engine does not support SubScalar()") 219 } 220 221 // MulScalar performs t × other elementwise. The leftTensor parameter indicates if the tensor is the left operand. Only scalar types are accepted in other. 222 // Acceptable FuncOpts are: UseUnsafe(), WithReuse(T), WithIncr(T) 223 func (t *Dense) MulScalar(other interface{}, leftTensor bool, opts ...FuncOpt) (retVal *Dense, err error) { 224 var ret Tensor 225 if t.oe != nil { 226 if ret, err = t.oe.MulScalar(t, other, leftTensor, opts...); err != nil { 227 return nil, errors.Wrapf(err, "Unable to do MulScalar()") 228 } 229 if retVal, err = assertDense(ret); err != nil { 230 return nil, errors.Wrapf(err, opFail, "MulScalar") 231 } 232 return 233 } 234 235 if muler, ok := t.e.(Muler); ok { 236 if ret, err = muler.MulScalar(t, other, leftTensor, opts...); err != nil { 237 return nil, errors.Wrapf(err, "Unable to do MulScalar()") 238 } 239 if retVal, err = assertDense(ret); err != nil { 240 return nil, errors.Wrapf(err, opFail, "MulScalar") 241 } 242 return 243 } 244 return nil, errors.Errorf("Engine does not support MulScalar()") 245 } 246 247 // DivScalar performs t ÷ other elementwise. The leftTensor parameter indicates if the tensor is the left operand. Only scalar types are accepted in other. 248 // Acceptable FuncOpts are: UseUnsafe(), WithReuse(T), WithIncr(T) 249 func (t *Dense) DivScalar(other interface{}, leftTensor bool, opts ...FuncOpt) (retVal *Dense, err error) { 250 var ret Tensor 251 if t.oe != nil { 252 if ret, err = t.oe.DivScalar(t, other, leftTensor, opts...); err != nil { 253 return nil, errors.Wrapf(err, "Unable to do DivScalar()") 254 } 255 if retVal, err = assertDense(ret); err != nil { 256 return nil, errors.Wrapf(err, opFail, "DivScalar") 257 } 258 return 259 } 260 261 if diver, ok := t.e.(Diver); ok { 262 if ret, err = diver.DivScalar(t, other, leftTensor, opts...); err != nil { 263 return nil, errors.Wrapf(err, "Unable to do DivScalar()") 264 } 265 if retVal, err = assertDense(ret); err != nil { 266 return nil, errors.Wrapf(err, opFail, "DivScalar") 267 } 268 return 269 } 270 return nil, errors.Errorf("Engine does not support DivScalar()") 271 } 272 273 // PowScalar performs t ^ other elementwise. The leftTensor parameter indicates if the tensor is the left operand. Only scalar types are accepted in other. 274 // Acceptable FuncOpts are: UseUnsafe(), WithReuse(T), WithIncr(T) 275 func (t *Dense) PowScalar(other interface{}, leftTensor bool, opts ...FuncOpt) (retVal *Dense, err error) { 276 var ret Tensor 277 if t.oe != nil { 278 if ret, err = t.oe.PowScalar(t, other, leftTensor, opts...); err != nil { 279 return nil, errors.Wrapf(err, "Unable to do PowScalar()") 280 } 281 if retVal, err = assertDense(ret); err != nil { 282 return nil, errors.Wrapf(err, opFail, "PowScalar") 283 } 284 return 285 } 286 287 if power, ok := t.e.(Power); ok { 288 if ret, err = power.PowScalar(t, other, leftTensor, opts...); err != nil { 289 return nil, errors.Wrapf(err, "Unable to do PowScalar()") 290 } 291 if retVal, err = assertDense(ret); err != nil { 292 return nil, errors.Wrapf(err, opFail, "PowScalar") 293 } 294 return 295 } 296 return nil, errors.Errorf("Engine does not support PowScalar()") 297 } 298 299 // ModScalar performs t % other elementwise. The leftTensor parameter indicates if the tensor is the left operand. Only scalar types are accepted in other. 300 // Acceptable FuncOpts are: UseUnsafe(), WithReuse(T), WithIncr(T) 301 func (t *Dense) ModScalar(other interface{}, leftTensor bool, opts ...FuncOpt) (retVal *Dense, err error) { 302 var ret Tensor 303 if t.oe != nil { 304 if ret, err = t.oe.ModScalar(t, other, leftTensor, opts...); err != nil { 305 return nil, errors.Wrapf(err, "Unable to do ModScalar()") 306 } 307 if retVal, err = assertDense(ret); err != nil { 308 return nil, errors.Wrapf(err, opFail, "ModScalar") 309 } 310 return 311 } 312 313 if moder, ok := t.e.(Moder); ok { 314 if ret, err = moder.ModScalar(t, other, leftTensor, opts...); err != nil { 315 return nil, errors.Wrapf(err, "Unable to do ModScalar()") 316 } 317 if retVal, err = assertDense(ret); err != nil { 318 return nil, errors.Wrapf(err, opFail, "ModScalar") 319 } 320 return 321 } 322 return nil, errors.Errorf("Engine does not support ModScalar()") 323 }