@@ -82,7 +82,7 @@ func (t *Dense) MatVecMul(other Tensor, opts ...FuncOpt) (retVal *Dense, err err
82
82
// check whether retVal has the same size as the resulting matrix would be: mx1
83
83
fo := ParseFuncOpts (opts ... )
84
84
defer returnOpOpt (fo )
85
- if retVal , err = handleReuse (fo .Reuse (), expectedShape ); err != nil {
85
+ if retVal , err = handleReuse (fo .Reuse (), expectedShape , fo . Safe () ); err != nil {
86
86
err = errors .Wrapf (err , opFail , "MatVecMul" )
87
87
return
88
88
}
@@ -131,7 +131,7 @@ func (t *Dense) MatMul(other Tensor, opts ...FuncOpt) (retVal *Dense, err error)
131
131
132
132
fo := ParseFuncOpts (opts ... )
133
133
defer returnOpOpt (fo )
134
- if retVal , err = handleReuse (fo .Reuse (), expectedShape ); err != nil {
134
+ if retVal , err = handleReuse (fo .Reuse (), expectedShape , fo . Safe () ); err != nil {
135
135
err = errors .Wrapf (err , opFail , "MatMul" )
136
136
return
137
137
}
@@ -170,7 +170,7 @@ func (t *Dense) Outer(other Tensor, opts ...FuncOpt) (retVal *Dense, err error)
170
170
171
171
fo := ParseFuncOpts (opts ... )
172
172
defer returnOpOpt (fo )
173
- if retVal , err = handleReuse (fo .Reuse (), expectedShape ); err != nil {
173
+ if retVal , err = handleReuse (fo .Reuse (), expectedShape , fo . Safe () ); err != nil {
174
174
err = errors .Wrapf (err , opFail , "Outer" )
175
175
return
176
176
}
@@ -380,13 +380,15 @@ func (t *Dense) SVD(uv, full bool) (s, u, v *Dense, err error) {
380
380
/* UTILITY FUNCTIONS */
381
381
382
382
// handleReuse extracts a *Dense from Tensor, and checks the shape of the reuse Tensor
383
- func handleReuse (reuse Tensor , expectedShape Shape ) (retVal * Dense , err error ) {
383
+ func handleReuse (reuse Tensor , expectedShape Shape , safe bool ) (retVal * Dense , err error ) {
384
384
if reuse != nil {
385
385
if retVal , err = assertDense (reuse ); err != nil {
386
386
err = errors .Wrapf (err , opFail , "handling reuse" )
387
387
return
388
388
}
389
-
389
+ if ! safe {
390
+ return
391
+ }
390
392
if err = reuseCheckShape (retVal , expectedShape ); err != nil {
391
393
err = errors .Wrapf (err , "Unable to process reuse *Dense Tensor. Shape error." )
392
394
return
0 commit comments