@@ -149,24 +149,13 @@ DASPK::do_integrate (double tout)
149149
150150 m_initialized = true ;
151151
152- m_info.resize (dim_vector (20 , 1 ));
153-
154- for (F77_INT i = 0 ; i < 20 ; i++)
155- m_info (i) = 0 ;
152+ m_info.fill (0 );
156153
157154 F77_INT n = octave::to_f77_int (size ());
158155
159156 nn = n;
160157
161- m_info (0 ) = 0 ;
162-
163- if (m_stop_time_set)
164- {
165- m_rwork (0 ) = m_stop_time;
166- m_info (3 ) = 1 ;
167- }
168- else
169- m_info (3 ) = 0 ;
158+ m_info[0 ] = 0 ;
170159
171160 // DAEFunc
172161
@@ -199,7 +188,7 @@ DASPK::do_integrate (double tout)
199188 return retval;
200189 }
201190
202- m_info ( 4 ) = (user_jac ? 1 : 0 );
191+ m_info[ 4 ] = (user_jac ? 1 : 0 );
203192
204193 DAEFunc::m_reset = false ;
205194
@@ -217,24 +206,35 @@ DASPK::do_integrate (double tout)
217206 if (eavfet == 1 )
218207 m_lrw += n;
219208
220- m_iwork.resize (dim_vector (m_liw, 1 ));
221- m_rwork.resize (dim_vector (m_lrw, 1 ));
209+ m_iwork.resize (m_liw);
210+ m_rwork.resize (m_lrw);
211+
212+ if (m_stop_time_set)
213+ {
214+ m_info[3 ] = 1 ;
215+ m_rwork[0 ] = m_stop_time;
216+ }
217+ else
218+ m_info[3 ] = 0 ;
222219
223220 // DASPK_options
224221
225- m_abs_tol = absolute_tolerance ();
226- m_rel_tol = relative_tolerance ();
222+ Array<double > atol_tmp = absolute_tolerance ();
223+ m_abs_tol.assign (atol_tmp.data (), atol_tmp.data () + atol_tmp.numel ());
224+
225+ Array<double > rtol_tmp = relative_tolerance ();
226+ m_rel_tol.assign (rtol_tmp.data (), rtol_tmp.data () + rtol_tmp.numel ());
227227
228- F77_INT abs_tol_len = octave::to_f77_int (m_abs_tol.numel ());
229- F77_INT rel_tol_len = octave::to_f77_int (m_rel_tol.numel ());
228+ F77_INT abs_tol_len = octave::to_f77_int (m_abs_tol.size ());
229+ F77_INT rel_tol_len = octave::to_f77_int (m_rel_tol.size ());
230230
231231 if (abs_tol_len == 1 && rel_tol_len == 1 )
232232 {
233- m_info ( 1 ) = 0 ;
233+ m_info[ 1 ] = 0 ;
234234 }
235235 else if (abs_tol_len == n && rel_tol_len == n)
236236 {
237- m_info ( 1 ) = 1 ;
237+ m_info[ 1 ] = 1 ;
238238 }
239239 else
240240 {
@@ -249,28 +249,28 @@ DASPK::do_integrate (double tout)
249249 double hmax = maximum_step_size ();
250250 if (hmax >= 0.0 )
251251 {
252- m_rwork ( 1 ) = hmax;
253- m_info ( 6 ) = 1 ;
252+ m_rwork[ 1 ] = hmax;
253+ m_info[ 6 ] = 1 ;
254254 }
255255 else
256- m_info ( 6 ) = 0 ;
256+ m_info[ 6 ] = 0 ;
257257
258258 double h0 = initial_step_size ();
259259 if (h0 >= 0.0 )
260260 {
261- m_rwork ( 2 ) = h0;
262- m_info ( 7 ) = 1 ;
261+ m_rwork[ 2 ] = h0;
262+ m_info[ 7 ] = 1 ;
263263 }
264264 else
265- m_info ( 7 ) = 0 ;
265+ m_info[ 7 ] = 0 ;
266266
267267 octave_idx_type maxord = maximum_order ();
268268 if (maxord >= 0 )
269269 {
270270 if (maxord > 0 && maxord < 6 )
271271 {
272- m_info ( 8 ) = 1 ;
273- m_iwork ( 2 ) = octave::to_f77_int (maxord);
272+ m_info[ 8 ] = 1 ;
273+ m_iwork[ 2 ] = octave::to_f77_int (maxord);
274274 }
275275 else
276276 {
@@ -304,7 +304,7 @@ DASPK::do_integrate (double tout)
304304 m_integration_error = true ;
305305 return retval;
306306 }
307- m_iwork ( 40 +i) = val;
307+ m_iwork[ 40 +i] = val;
308308 }
309309 }
310310 else
@@ -320,7 +320,7 @@ DASPK::do_integrate (double tout)
320320
321321 case 0 :
322322 case 2 :
323- m_info ( 9 ) = octave::to_f77_int (eiq);
323+ m_info[ 9 ] = octave::to_f77_int (eiq);
324324 break ;
325325
326326 default :
@@ -354,7 +354,7 @@ DASPK::do_integrate (double tout)
354354 " %" OCTAVE_IDX_TYPE_FORMAT , eiq);
355355
356356 for (F77_INT i = 0 ; i < n; i++)
357- m_iwork ( lid+i) = (av (i) ? -1 : 1 );
357+ m_iwork[ lid+i] = (av (i) ? -1 : 1 );
358358 }
359359 else
360360 {
@@ -374,12 +374,12 @@ DASPK::do_integrate (double tout)
374374 return retval;
375375 }
376376
377- m_info ( 10 ) = octave::to_f77_int (ccic);
377+ m_info[ 10 ] = octave::to_f77_int (ccic);
378378 }
379379
380380 if (eavfet)
381381 {
382- m_info ( 15 ) = 1 ;
382+ m_info[ 15 ] = 1 ;
383383
384384 // FIXME: this code is duplicated above.
385385
@@ -400,7 +400,7 @@ DASPK::do_integrate (double tout)
400400 eiq);
401401
402402 for (F77_INT i = 0 ; i < n; i++)
403- m_iwork ( lid+i) = (av (i) ? -1 : 1 );
403+ m_iwork[ lid+i] = (av (i) ? -1 : 1 );
404404 }
405405 }
406406
@@ -410,13 +410,13 @@ DASPK::do_integrate (double tout)
410410
411411 if (ich.numel () == 6 )
412412 {
413- m_iwork ( 31 ) = octave::to_f77_int (octave::math::nint_big (ich (0 )));
414- m_iwork ( 32 ) = octave::to_f77_int (octave::math::nint_big (ich (1 )));
415- m_iwork ( 33 ) = octave::to_f77_int (octave::math::nint_big (ich (2 )));
416- m_iwork ( 34 ) = octave::to_f77_int (octave::math::nint_big (ich (3 )));
413+ m_iwork[ 31 ] = octave::to_f77_int (octave::math::nint_big (ich (0 )));
414+ m_iwork[ 32 ] = octave::to_f77_int (octave::math::nint_big (ich (1 )));
415+ m_iwork[ 33 ] = octave::to_f77_int (octave::math::nint_big (ich (2 )));
416+ m_iwork[ 34 ] = octave::to_f77_int (octave::math::nint_big (ich (3 )));
417417
418- m_rwork ( 13 ) = ich (4 );
419- m_rwork ( 14 ) = ich (5 );
418+ m_rwork[ 13 ] = ich (4 );
419+ m_rwork[ 14 ] = ich (5 );
420420 }
421421 else
422422 {
@@ -427,7 +427,7 @@ DASPK::do_integrate (double tout)
427427 return retval;
428428 }
429429
430- m_info ( 16 ) = 1 ;
430+ m_info[ 16 ] = 1 ;
431431 }
432432
433433 octave_idx_type pici = print_initial_condition_info ();
@@ -436,7 +436,7 @@ DASPK::do_integrate (double tout)
436436 case 0 :
437437 case 1 :
438438 case 2 :
439- m_info ( 17 ) = octave::to_f77_int (pici);
439+ m_info[ 17 ] = octave::to_f77_int (pici);
440440 break ;
441441
442442 default :
@@ -456,13 +456,13 @@ DASPK::do_integrate (double tout)
456456 double *px = m_x.rwdata ();
457457 double *pxdot = m_xdot.rwdata ();
458458
459- F77_INT *pinfo = m_info.rwdata ();
459+ F77_INT *pinfo = m_info.data ();
460460
461- double *prel_tol = m_rel_tol.rwdata ();
462- double *pabs_tol = m_abs_tol.rwdata ();
461+ double *prel_tol = m_rel_tol.data ();
462+ double *pabs_tol = m_abs_tol.data ();
463463
464- double *prwork = m_rwork.rwdata ();
465- F77_INT *piwork = m_iwork.rwdata ();
464+ double *prwork = m_rwork.data ();
465+ F77_INT *piwork = m_iwork.data ();
466466
467467 double *dummy = nullptr ;
468468 F77_INT *idummy = nullptr ;
0 commit comments