21
21
// MODULES //
22
22
23
23
var isReadOnly = require ( '@stdlib/ndarray/base/assert/is-read-only' ) ;
24
+ var normalizeIndex = require ( '@stdlib/ndarray/base/normalize-index' ) ;
24
25
var getDType = require ( '@stdlib/ndarray/base/dtype' ) ;
25
26
var getShape = require ( '@stdlib/ndarray/base/shape' ) ;
26
27
var getStrides = require ( '@stdlib/ndarray/base/strides' ) ;
@@ -77,6 +78,7 @@ function expandDimensions( x, axis ) {
77
78
var ord ;
78
79
var sh ;
79
80
var st ;
81
+ var d ;
80
82
var N ;
81
83
var i ;
82
84
@@ -88,15 +90,11 @@ function expandDimensions( x, axis ) {
88
90
strides = [ ] ;
89
91
shape = [ ] ;
90
92
91
- if ( axis < 0 ) {
92
- if ( axis < - N - 1 ) {
93
- throw new RangeError ( format ( 'invalid argument. Specified axis is out-of-bounds. Must be on the interval: [-%u-1, %u]. Value: `%d`.' , N , N , axis ) ) ;
94
- }
95
- axis += N + 1 ;
96
- } else if ( axis > N ) {
97
- throw new RangeError ( format ( 'invalid argument. Specified axis is out-of-bounds. Must be on the interval: [-%u-1, %u]. Value: `%d`.' , N , N , axis ) ) ;
93
+ d = normalizeIndex ( axis , N ) ;
94
+ if ( d === - 1 ) {
95
+ throw new RangeError ( format ( 'invalid argument. Specified axis is out-of-bounds. Must be on the interval: [-%u, %u]. Value: `%d`.' , N + 1 , N , axis ) ) ;
98
96
}
99
- if ( axis === 0 ) {
97
+ if ( d === 0 ) {
100
98
// Prepend singleton dimension...
101
99
shape . push ( 1 ) ;
102
100
strides . push ( st [ 0 ] ) ;
@@ -106,7 +104,7 @@ function expandDimensions( x, axis ) {
106
104
shape . push ( sh [ i ] ) ;
107
105
strides . push ( st [ i ] ) ;
108
106
}
109
- } else if ( axis === N ) {
107
+ } else if ( d === N ) {
110
108
// Copy dimensions...
111
109
for ( i = 0 ; i < N ; i ++ ) {
112
110
shape . push ( sh [ i ] ) ;
@@ -118,17 +116,17 @@ function expandDimensions( x, axis ) {
118
116
} else {
119
117
// Insert a singleton dimension...
120
118
for ( i = 0 ; i < N + 1 ; i ++ ) {
121
- if ( i === axis ) {
119
+ if ( i === d ) {
122
120
shape . push ( 1 ) ;
123
121
if ( ord === 'row-major' ) {
124
122
strides . push ( st [ i - 1 ] ) ;
125
123
} else { // ord === 'column-major'
126
124
strides . push ( st [ i ] ) ;
127
125
}
128
- } else if ( i < axis ) {
126
+ } else if ( i < d ) {
129
127
shape . push ( sh [ i ] ) ;
130
128
strides . push ( st [ i ] ) ;
131
- } else { // i > axis
129
+ } else { // i > d
132
130
shape . push ( sh [ i - 1 ] ) ;
133
131
strides . push ( st [ i - 1 ] ) ;
134
132
}
0 commit comments