@@ -236,49 +236,26 @@ private static (double[] G, double[] H) Interpolate(
236236 Vector < double > vF2 = new ( F2 ) ;
237237 int vectorSize = Vector < double > . Count ;
238238
239- int i = 0 ;
240- while ( GeopackConstants . IgrfCoefficientCount - i >= vectorSize )
239+ int vectorizationStartPosition = 0 ;
240+ while ( GeopackConstants . IgrfCoefficientCount - vectorizationStartPosition >= vectorSize )
241241 {
242- Vector < double > vG1 = new ( G1 , i ) ;
243- Vector < double > vG2 = new ( G2 , i ) ;
244- Vector < double > vH1 = new ( H1 , i ) ;
245- Vector < double > vH2 = new ( H2 , i ) ;
242+ Vector < double > vG1 = new ( G1 , vectorizationStartPosition ) ;
243+ Vector < double > vG2 = new ( G2 , vectorizationStartPosition ) ;
244+ Vector < double > vH1 = new ( H1 , vectorizationStartPosition ) ;
245+ Vector < double > vH2 = new ( H2 , vectorizationStartPosition ) ;
246246
247- ( vG1 * vF1 + vG2 * vF2 ) . CopyTo ( G , i ) ;
248- ( vH1 * vF1 + vH2 * vF2 ) . CopyTo ( H , i ) ;
247+ ( vG1 * vF1 + vG2 * vF2 ) . CopyTo ( G , vectorizationStartPosition ) ;
248+ ( vH1 * vF1 + vH2 * vF2 ) . CopyTo ( H , vectorizationStartPosition ) ;
249249
250- i += vectorSize ;
250+ vectorizationStartPosition += vectorSize ;
251251 }
252252
253- if ( i >= GeopackConstants . IgrfCoefficientCount )
253+ while ( vectorizationStartPosition < GeopackConstants . IgrfCoefficientCount )
254254 {
255- return ( G , H ) ;
256- }
257-
258- int remaining = GeopackConstants . IgrfCoefficientCount - i ;
259- if ( remaining >= vectorSize / 2 )
260- {
261- Vector < double > vG1 = new ( G1 , i ) ;
262- Vector < double > vG2 = new ( G2 , i ) ;
263- Vector < double > vH1 = new ( H1 , i ) ;
264- Vector < double > vH2 = new ( H2 , i ) ;
255+ G [ vectorizationStartPosition ] = G1 [ vectorizationStartPosition ] * F1 + G2 [ vectorizationStartPosition ] * F2 ;
256+ H [ vectorizationStartPosition ] = H1 [ vectorizationStartPosition ] * F1 + H2 [ vectorizationStartPosition ] * F2 ;
265257
266- Vector < double > vG = vG1 * vF1 + vG2 * vF2 ;
267- Vector < double > vH = vH1 * vF1 + vH2 * vF2 ;
268-
269- for ( int j = 0 ; j < remaining ; j ++ )
270- {
271- G [ i + j ] = vG [ j ] ;
272- H [ i + j ] = vH [ j ] ;
273- }
274- }
275- else
276- {
277- for ( ; i < GeopackConstants . IgrfCoefficientCount ; i ++ )
278- {
279- G [ i ] = G1 [ i ] * F1 + G2 [ i ] * F2 ;
280- H [ i ] = H1 [ i ] * F1 + H2 [ i ] * F2 ;
281- }
258+ vectorizationStartPosition ++ ;
282259 }
283260
284261 return ( G , H ) ;
0 commit comments