kmat 0.0.3 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -37,44 +37,46 @@ kmm_mat_add_destl(VALUE self, VALUE other)
37
37
  CHECK_SAME_SIZE(sy, sx);
38
38
  if ( sy->vtype == VT_DOUBLE ) {
39
39
  if ( sy->stype == ST_FULL && sx->stype == ST_FULL && sy->trans == sx->trans ) {
40
- double alpha = 1.0; int len = LENGTH(sy), ione=1;
40
+ const double alpha = 1.0; const int len = LENGTHi(sy), ione=1;
41
41
  daxpy_(&len, &alpha, sx->dbody, &ione, sy->dbody, &ione);
42
42
  } else if ( sy->stype != ST_RSUB && sx->stype != ST_RSUB ) {
43
- double alpha = 1.0; int incy, stepy, incx, stepx;
43
+ const double alpha = 1.0; int incy, incx; size_t stepy, stepx;
44
44
  if ( sy->trans ) {
45
- incy = sy->ld; stepy = 1;
45
+ incy = s2i(sy->ld); stepy = 1;
46
46
  } else {
47
47
  incy = 1; stepy = sy->ld;
48
48
  }
49
49
  if ( sx->trans ) {
50
- incx = sx->ld; stepx = 1;
50
+ incx = s2i(sx->ld); stepx = 1;
51
51
  } else {
52
52
  incx = 1; stepx = sx->ld;
53
53
  }
54
- for ( int i=0; i<(sy->n); i++ ) {
55
- daxpy_(&(sy->m), &alpha, (sx->dbody)+(i*stepx), &incx, (sy->dbody)+(i*stepy), &incy);
54
+ const int m=s2i(sy->m);
55
+ for ( size_t i=0; i<(sy->n); i++ ) {
56
+ daxpy_(&m, &alpha, (sx->dbody)+(i*stepx), &incx, (sy->dbody)+(i*stepy), &incy);
56
57
  }
57
58
  } else {
58
59
  km_smat_each2_d(sy, sx, km_add_d, NULL);
59
60
  }
60
61
  } else if ( sy->vtype == VT_COMPLEX ) {
61
62
  if ( sy->stype == ST_FULL && sx->stype == ST_FULL && sy->trans == sx->trans ) {
62
- COMPLEX alpha = cpack(1.0, 0.0); int len = LENGTH(sy), ione=1;
63
+ const COMPLEX alpha = cpack(1.0, 0.0); int len = LENGTHi(sy), ione=1;
63
64
  zaxpy_(&len, &alpha, sx->zbody, &ione, sy->zbody, &ione);
64
65
  } else if ( sy->stype != ST_RSUB && sx->stype != ST_RSUB ) {
65
- COMPLEX alpha = cpack(1.0, 0.0); int incy, stepy, incx, stepx;
66
+ const COMPLEX alpha = cpack(1.0, 0.0); int incy, incx; size_t stepy, stepx;
66
67
  if ( sy->trans ) {
67
- incy = sy->ld; stepy = 1;
68
+ incy = s2i(sy->ld); stepy = 1;
68
69
  } else {
69
70
  incy = 1; stepy = sy->ld;
70
71
  }
71
72
  if ( sx->trans ) {
72
- incx = sx->ld; stepx = 1;
73
+ incx = s2i(sx->ld); stepx = 1;
73
74
  } else {
74
75
  incx = 1; stepx = sx->ld;
75
76
  }
76
- for ( int i=0; i<(sy->n); i++ ) {
77
- zaxpy_(&(sy->m), &alpha, (sx->zbody)+(i*stepx), &incx, (sy->zbody)+(i*stepy), &incy);
77
+ const int m=s2i(sy->m);
78
+ for ( size_t i=0; i<(sy->n); i++ ) {
79
+ zaxpy_(&m, &alpha, (sx->zbody)+(i*stepx), &incx, (sy->zbody)+(i*stepy), &incy);
78
80
  }
79
81
  } else {
80
82
  km_smat_each2_z(sy, sx, km_add_z, NULL);
@@ -122,44 +124,46 @@ kmm_mat_sub_destl(VALUE self, VALUE other)
122
124
  CHECK_SAME_SIZE(sy, sx);
123
125
  if ( sy->vtype == VT_DOUBLE ) {
124
126
  if ( sy->stype == ST_FULL && sx->stype == ST_FULL && sy->trans == sx->trans ) {
125
- double alpha = -1.0; int len = LENGTH(sy), ione=1;
127
+ const double alpha = -1.0; const int len = LENGTHi(sy), ione=1;
126
128
  daxpy_(&len, &alpha, sx->dbody, &ione, sy->dbody, &ione);
127
129
  } else if ( sy->stype != ST_RSUB && sx->stype != ST_RSUB ) {
128
- double alpha = -1.0; int incy, stepy, incx, stepx;
130
+ const double alpha = -1.0; int incy, incx; size_t stepy, stepx;
129
131
  if ( sy->trans ) {
130
- incy = sy->ld; stepy = 1;
132
+ incy = s2i(sy->ld); stepy = 1;
131
133
  } else {
132
134
  incy = 1; stepy = sy->ld;
133
135
  }
134
136
  if ( sx->trans ) {
135
- incx = sx->ld; stepx = 1;
137
+ incx = s2i(sx->ld); stepx = 1;
136
138
  } else {
137
139
  incx = 1; stepx = sx->ld;
138
140
  }
139
- for ( int i=0; i<(sy->n); i++ ) {
140
- daxpy_(&(sy->m), &alpha, (sx->dbody)+(i*stepx), &incx, (sy->dbody)+(i*stepy), &incy);
141
+ const int m=s2i(sy->m);
142
+ for ( size_t i=0; i<(sy->n); i++ ) {
143
+ daxpy_(&m, &alpha, (sx->dbody)+(i*stepx), &incx, (sy->dbody)+(i*stepy), &incy);
141
144
  }
142
145
  } else {
143
146
  km_smat_each2_d(sy, sx, km_sub_d, NULL);
144
147
  }
145
148
  } else if ( sy->vtype == VT_COMPLEX ) {
146
149
  if ( sy->stype == ST_FULL && sx->stype == ST_FULL && sy->trans == sx->trans ) {
147
- COMPLEX alpha = cpack(-1.0, 0.0); int len = LENGTH(sy), ione=1;
150
+ const COMPLEX alpha = cpack(-1.0, 0.0); const int len = LENGTHi(sy), ione=1;
148
151
  zaxpy_(&len, &alpha, sx->zbody, &ione, sy->zbody, &ione);
149
152
  } else if ( sy->stype != ST_RSUB && sx->stype != ST_RSUB ) {
150
- COMPLEX alpha = cpack(-1.0, 0.0); int incy, stepy, incx, stepx;
153
+ const COMPLEX alpha = cpack(-1.0, 0.0); int incy, incx; size_t stepy, stepx;
151
154
  if ( sy->trans ) {
152
- incy = sy->ld; stepy = 1;
155
+ incy = s2i(sy->ld); stepy = 1;
153
156
  } else {
154
157
  incy = 1; stepy = sy->ld;
155
158
  }
156
159
  if ( sx->trans ) {
157
- incx = sx->ld; stepx = 1;
160
+ incx = s2i(sx->ld); stepx = 1;
158
161
  } else {
159
162
  incx = 1; stepx = sx->ld;
160
163
  }
161
- for ( int i=0; i<(sy->n); i++ ) {
162
- zaxpy_(&(sy->m), &alpha, (sx->zbody)+(i*stepx), &incx, (sy->zbody)+(i*stepy), &incy);
164
+ const int m=s2i(sy->m);
165
+ for ( size_t i=0; i<(sy->n); i++ ) {
166
+ zaxpy_(&m, &alpha, (sx->zbody)+(i*stepx), &incx, (sy->zbody)+(i*stepy), &incy);
163
167
  }
164
168
  } else {
165
169
  km_smat_each2_z(sy, sx, km_sub_z, NULL);
@@ -283,31 +287,31 @@ kmm_mat_e_div_destl(VALUE self, VALUE other)
283
287
  static void
284
288
  km_s_add_d(double *ent, void *data)
285
289
  {
286
- double *val = (double *)data;
290
+ const double *val = (double *)data;
287
291
  *ent += *val;
288
292
  }
289
293
  static void
290
294
  km_s_add_z(COMPLEX *ent, void *data)
291
295
  {
292
- COMPLEX *val = (COMPLEX *)data;
296
+ const COMPLEX *val = (COMPLEX *)data;
293
297
  *ent += *val;
294
298
  }
295
299
  static void
296
300
  km_s_add_i(int *ent, void *data)
297
301
  {
298
- int *val = (int *)data;
302
+ const int *val = (int *)data;
299
303
  *ent += *val;
300
304
  }
301
305
  static void
302
306
  km_s_add_b(bool *ent, void *data)
303
307
  {
304
- bool *val = (bool *)data;
308
+ const bool *val = (bool *)data;
305
309
  *ent = XOR(*ent, *val);
306
310
  }
307
311
  static void
308
312
  km_s_add_v(VALUE *ent, void *data)
309
313
  {
310
- VALUE val = (VALUE)data;
314
+ const VALUE val = (VALUE)data;
311
315
  *ent = rb_funcall(*ent, id_op_plus, 1, val);
312
316
  }
313
317
  VALUE
@@ -316,52 +320,56 @@ kmm_mat_s_add_destl(VALUE self, VALUE vval)
316
320
  km_check_frozen(self);
317
321
  SMAT *sy = km_mat2smat(self);
318
322
  if ( sy->vtype == VT_DOUBLE ) {
319
- double val = NUM2DBL(vval);
323
+ const double val = NUM2DBL(vval);
320
324
  if ( sy->stype == ST_FULL ) {
321
- double alpha=1.0;
322
- int len=LENGTH(sy), ione=1, izero=0;
325
+ const double alpha=1.0;
326
+ const int len=LENGTHi(sy), ione=1, izero=0;
323
327
  daxpy_(&len, &alpha, &val, &izero, sy->dbody, &ione);
324
328
  } else if ( sy->stype == ST_SSUB ) {
325
- double alpha=1.0;
326
- int ione=1, izero=0;
329
+ const double alpha=1.0;
330
+ const int ione=1, izero=0;
327
331
  if ( sy->trans ) {
328
- for ( int i=0; i<(sy->m); i++ ) {
329
- daxpy_(&(sy->n), &alpha, &val, &izero, (sy->dbody)+(i*(sy->ld)), &ione);
332
+ const int n=s2i(sy->n);
333
+ for ( size_t i=0; i<(sy->m); i++ ) {
334
+ daxpy_(&n, &alpha, &val, &izero, (sy->dbody)+(i*(sy->ld)), &ione);
330
335
  }
331
336
  } else {
332
- for ( int i=0; i<(sy->n); i++ ) {
333
- daxpy_(&(sy->m), &alpha, &val, &izero, (sy->dbody)+(i*(sy->ld)), &ione);
337
+ const int m=s2i(sy->m);
338
+ for ( size_t i=0; i<(sy->n); i++ ) {
339
+ daxpy_(&m, &alpha, &val, &izero, (sy->dbody)+(i*(sy->ld)), &ione);
334
340
  }
335
341
  }
336
342
  } else {
337
343
  km_smat_each_d(sy, km_s_add_d, (void *)&val);
338
344
  }
339
345
  } else if ( sy->vtype == VT_COMPLEX ) {
340
- COMPLEX val = km_v2c(vval);
346
+ const COMPLEX val = km_v2c(vval);
341
347
  if ( sy->stype == ST_FULL ) {
342
- COMPLEX alpha=cpack(1.0, 0.0);
343
- int len=LENGTH(sy), ione=1, izero=0;
348
+ const COMPLEX alpha=cpack(1.0, 0.0);
349
+ const int len=LENGTHi(sy), ione=1, izero=0;
344
350
  zaxpy_(&len, &alpha, &val, &izero, sy->zbody, &ione);
345
351
  } else if ( sy->stype == ST_SSUB ) {
346
- COMPLEX alpha=cpack(1.0, 0.0);
347
- int ione=1, izero=0;
352
+ const COMPLEX alpha=cpack(1.0, 0.0);
353
+ const int ione=1, izero=0;
348
354
  if ( sy->trans ) {
349
- for ( int i=0; i<(sy->m); i++ ) {
350
- zaxpy_(&(sy->n), &alpha, &val, &izero, (sy->zbody)+(i*(sy->ld)), &ione);
355
+ const int n=s2i(sy->n);
356
+ for ( size_t i=0; i<(sy->m); i++ ) {
357
+ zaxpy_(&n, &alpha, &val, &izero, (sy->zbody)+(i*(sy->ld)), &ione);
351
358
  }
352
359
  } else {
353
- for ( int i=0; i<(sy->n); i++ ) {
354
- zaxpy_(&(sy->m), &alpha, &val, &izero, (sy->zbody)+(i*(sy->ld)), &ione);
360
+ const int m=s2i(sy->m);
361
+ for ( size_t i=0; i<(sy->n); i++ ) {
362
+ zaxpy_(&m, &alpha, &val, &izero, (sy->zbody)+(i*(sy->ld)), &ione);
355
363
  }
356
364
  }
357
365
  } else {
358
366
  km_smat_each_z(sy, km_s_add_z, (void *)&val);
359
367
  }
360
368
  } else if ( sy->vtype == VT_INT ) {
361
- int val = NUM2INT(vval);
369
+ const int val = NUM2INT(vval);
362
370
  km_smat_each_i(sy, km_s_add_i, (void *)&val);
363
371
  } else if ( sy->vtype == VT_BOOL ) {
364
- bool val = RTEST(vval);
372
+ const bool val = RTEST(vval);
365
373
  km_smat_each_b(sy, km_s_add_b, (void *)&val);
366
374
  } else if ( sy->vtype == VT_VALUE ) {
367
375
  km_smat_each_v(sy, km_s_add_v, (void *)vval);
@@ -374,25 +382,25 @@ kmm_mat_s_add_destl(VALUE self, VALUE vval)
374
382
  static void
375
383
  km_s_sub_d(double *ent, void *data)
376
384
  {
377
- double *val = (double *)data;
385
+ const double *val = (double *)data;
378
386
  *ent -= *val;
379
387
  }
380
388
  static void
381
389
  km_s_sub_z(COMPLEX *ent, void *data)
382
390
  {
383
- COMPLEX *val = (COMPLEX *)data;
391
+ const COMPLEX *val = (COMPLEX *)data;
384
392
  *ent -= *val;
385
393
  }
386
394
  static void
387
395
  km_s_sub_i(int *ent, void *data)
388
396
  {
389
- int *val = (int *)data;
397
+ const int *val = (int *)data;
390
398
  *ent -= *val;
391
399
  }
392
400
  static void
393
401
  km_s_sub_v(VALUE *ent, void *data)
394
402
  {
395
- VALUE val = (VALUE)data;
403
+ const VALUE val = (VALUE)data;
396
404
  *ent = rb_funcall(*ent, id_op_minus, 1, val);
397
405
  }
398
406
  VALUE
@@ -403,50 +411,54 @@ kmm_mat_s_sub_destl(VALUE self, VALUE vval)
403
411
  if ( sy->vtype == VT_DOUBLE ) {
404
412
  double val = NUM2DBL(vval);
405
413
  if ( sy->stype == ST_FULL ) {
406
- double alpha=-1.0;
407
- int len=LENGTH(sy), ione=1, izero=0;
414
+ const double alpha=-1.0;
415
+ const int len=LENGTHi(sy), ione=1, izero=0;
408
416
  daxpy_(&len, &alpha, &val, &izero, sy->dbody, &ione);
409
417
  } else if ( sy->stype == ST_SSUB ) {
410
- double alpha=-1.0;
411
- int ione=1, izero=0;
418
+ const double alpha=-1.0;
419
+ const int ione=1, izero=0;
412
420
  if ( sy->trans ) {
413
- for ( int i=0; i<(sy->m); i++ ) {
414
- daxpy_(&(sy->n), &alpha, &val, &izero, (sy->dbody)+(i*(sy->ld)), &ione);
421
+ const int n=s2i(sy->n);
422
+ for ( size_t i=0; i<(sy->m); i++ ) {
423
+ daxpy_(&n, &alpha, &val, &izero, (sy->dbody)+(i*(sy->ld)), &ione);
415
424
  }
416
425
  } else {
417
- for ( int i=0; i<(sy->n); i++ ) {
418
- daxpy_(&(sy->m), &alpha, &val, &izero, (sy->dbody)+(i*(sy->ld)), &ione);
426
+ const int m=s2i(sy->m);
427
+ for ( size_t i=0; i<(sy->n); i++ ) {
428
+ daxpy_(&m, &alpha, &val, &izero, (sy->dbody)+(i*(sy->ld)), &ione);
419
429
  }
420
430
  }
421
431
  } else {
422
432
  km_smat_each_d(sy, km_s_sub_d, (void *)&val);
423
433
  }
424
434
  } else if ( sy->vtype == VT_COMPLEX ) {
425
- COMPLEX val = km_v2c(vval);
435
+ const COMPLEX val = km_v2c(vval);
426
436
  if ( sy->stype == ST_FULL ) {
427
- COMPLEX alpha=cpack(-1.0, 0.0);
428
- int len=LENGTH(sy), ione=1, izero=0;
437
+ const COMPLEX alpha=cpack(-1.0, 0.0);
438
+ const int len=LENGTHi(sy), ione=1, izero=0;
429
439
  zaxpy_(&len, &alpha, &val, &izero, sy->zbody, &ione);
430
440
  } else if ( sy->stype == ST_SSUB ) {
431
- COMPLEX alpha=cpack(-1.0, 0.0);
432
- int ione=1, izero=0;
441
+ const COMPLEX alpha=cpack(-1.0, 0.0);
442
+ const int ione=1, izero=0;
433
443
  if ( sy->trans ) {
434
- for ( int i=0; i<(sy->m); i++ ) {
435
- zaxpy_(&(sy->n), &alpha, &val, &izero, (sy->zbody)+(i*(sy->ld)), &ione);
444
+ const int n=s2i(sy->n);
445
+ for ( size_t i=0; i<(sy->m); i++ ) {
446
+ zaxpy_(&n, &alpha, &val, &izero, (sy->zbody)+(i*(sy->ld)), &ione);
436
447
  }
437
448
  } else {
438
- for ( int i=0; i<(sy->n); i++ ) {
439
- zaxpy_(&(sy->m), &alpha, &val, &izero, (sy->zbody)+(i*(sy->ld)), &ione);
449
+ const int m=s2i(sy->m);
450
+ for ( size_t i=0; i<(sy->n); i++ ) {
451
+ zaxpy_(&m, &alpha, &val, &izero, (sy->zbody)+(i*(sy->ld)), &ione);
440
452
  }
441
453
  }
442
454
  } else {
443
455
  km_smat_each_z(sy, km_s_sub_z, (void *)&val);
444
456
  }
445
457
  } else if ( sy->vtype == VT_INT ) {
446
- int val = NUM2INT(vval);
458
+ const int val = NUM2INT(vval);
447
459
  km_smat_each_i(sy, km_s_sub_i, (void *)&val);
448
460
  } else if ( sy->vtype == VT_BOOL ) {
449
- bool val = RTEST(vval);
461
+ const bool val = RTEST(vval);
450
462
  km_smat_each_b(sy, km_s_add_b, (void *)&val); // subtract is the same as add for boolean
451
463
  } else if ( sy->vtype == VT_VALUE ) {
452
464
  km_smat_each_v(sy, km_s_sub_v, (void *)vval);
@@ -460,25 +472,25 @@ kmm_mat_s_sub_destl(VALUE self, VALUE vval)
460
472
  static void
461
473
  km_s_mul_d(double *ent, void *data)
462
474
  {
463
- double *val = (double *)data;
475
+ const double *val = (double *)data;
464
476
  *ent *= *val;
465
477
  }
466
478
  static void
467
479
  km_s_mul_z(COMPLEX *ent, void *data)
468
480
  {
469
- COMPLEX *val = (COMPLEX *)data;
481
+ const COMPLEX *val = (COMPLEX *)data;
470
482
  *ent *= *val;
471
483
  }
472
484
  static void
473
485
  km_s_mul_i(int *ent, void *data)
474
486
  {
475
- int *val = (int *)data;
487
+ const int *val = (int *)data;
476
488
  *ent *= *val;
477
489
  }
478
490
  static void
479
491
  km_s_mul_v(VALUE *ent, void *data)
480
492
  {
481
- VALUE val = (VALUE)data;
493
+ const VALUE val = (VALUE)data;
482
494
  *ent = rb_funcall(*ent, id_op_mul, 1, val);
483
495
  }
484
496
  VALUE
@@ -487,45 +499,49 @@ kmm_mat_s_mul_destl(VALUE self, VALUE vval)
487
499
  km_check_frozen(self);
488
500
  SMAT *sy = km_mat2smat(self);
489
501
  if ( sy->vtype == VT_DOUBLE ) {
490
- double val = NUM2DBL(vval);
502
+ const double val = NUM2DBL(vval);
491
503
  if ( sy->stype == ST_FULL ) {
492
- int len=LENGTH(sy), ione=1;
504
+ const int len=LENGTHi(sy), ione=1;
493
505
  dscal_(&len, &val, sy->dbody, &ione);
494
506
  } else if ( sy->stype == ST_SSUB ) {
495
- int ione=1;
507
+ const int ione=1;
496
508
  if ( sy->trans ) {
497
- for ( int i=0; i<(sy->m); i++ ) {
498
- dscal_(&(sy->n), &val, (sy->dbody)+(i*(sy->ld)), &ione);
509
+ const int n=s2i(sy->n);
510
+ for ( size_t i=0; i<(sy->m); i++ ) {
511
+ dscal_(&n, &val, (sy->dbody)+(i*(sy->ld)), &ione);
499
512
  }
500
513
  } else {
501
- for ( int i=0; i<(sy->n); i++ ) {
502
- dscal_(&(sy->m), &val, (sy->dbody)+(i*(sy->ld)), &ione);
514
+ const int m=s2i(sy->m);
515
+ for ( size_t i=0; i<(sy->n); i++ ) {
516
+ dscal_(&m, &val, (sy->dbody)+(i*(sy->ld)), &ione);
503
517
  }
504
518
  }
505
519
  } else {
506
520
  km_smat_each_d(sy, km_s_mul_d, (void *)&val);
507
521
  }
508
522
  } else if ( sy->vtype == VT_COMPLEX ) {
509
- COMPLEX val = km_v2c(vval);
523
+ const COMPLEX val = km_v2c(vval);
510
524
  if ( sy->stype == ST_FULL ) {
511
- int len=LENGTH(sy), ione=1;
525
+ const int len=LENGTHi(sy), ione=1;
512
526
  zscal_(&len, &val, sy->zbody, &ione);
513
527
  } else if ( sy->stype == ST_SSUB ) {
514
- int ione=1;
528
+ const int ione=1;
515
529
  if ( sy->trans ) {
516
- for ( int i=0; i<(sy->m); i++ ) {
517
- zscal_(&(sy->n), &val, (sy->zbody)+(i*(sy->ld)), &ione);
530
+ const int n=s2i(sy->n);
531
+ for ( size_t i=0; i<(sy->m); i++ ) {
532
+ zscal_(&n, &val, (sy->zbody)+(i*(sy->ld)), &ione);
518
533
  }
519
534
  } else {
520
- for ( int i=0; i<(sy->n); i++ ) {
521
- zscal_(&(sy->m), &val, (sy->zbody)+(i*(sy->ld)), &ione);
535
+ const int m=s2i(sy->m);
536
+ for ( size_t i=0; i<(sy->n); i++ ) {
537
+ zscal_(&m, &val, (sy->zbody)+(i*(sy->ld)), &ione);
522
538
  }
523
539
  }
524
540
  } else {
525
541
  km_smat_each_z(sy, km_s_mul_z, (void *)&val);
526
542
  }
527
543
  } else if ( sy->vtype == VT_INT ) {
528
- int val = NUM2INT(vval);
544
+ const int val = NUM2INT(vval);
529
545
  km_smat_each_i(sy, km_s_mul_i, (void *)&val);
530
546
  } else if ( sy->vtype == VT_BOOL ) {
531
547
  if ( RTEST(vval) ) {
@@ -544,13 +560,13 @@ kmm_mat_s_mul_destl(VALUE self, VALUE vval)
544
560
  static void
545
561
  km_s_div_i(int *ent, void *data)
546
562
  {
547
- int *val = (int *)data;
563
+ const int *val = (int *)data;
548
564
  *ent /= *val;
549
565
  }
550
566
  static void
551
567
  km_s_div_v(VALUE *ent, void *data)
552
568
  {
553
- VALUE val = (VALUE)data;
569
+ const VALUE val = (VALUE)data;
554
570
  *ent = rb_funcall(*ent, id_op_div, 1, val);
555
571
  }
556
572
  VALUE
@@ -563,17 +579,19 @@ kmm_mat_s_div_destl(VALUE self, VALUE vval)
563
579
  if ( val == 0.0 ) { rb_raise(rb_eZeroDivError, "divided by 0"); }
564
580
  val = 1.0/val;
565
581
  if ( sy->stype == ST_FULL ) {
566
- int len=LENGTH(sy), ione=1;
582
+ const int len=LENGTHi(sy), ione=1;
567
583
  dscal_(&len, &val, sy->dbody, &ione);
568
584
  } else if ( sy->stype == ST_SSUB ) {
569
- int ione=1;
585
+ const int ione=1;
570
586
  if ( sy->trans ) {
571
- for ( int i=0; i<(sy->m); i++ ) {
572
- dscal_(&(sy->n), &val, (sy->dbody)+(i*(sy->ld)), &ione);
587
+ const int n=s2i(sy->n);
588
+ for ( size_t i=0; i<(sy->m); i++ ) {
589
+ dscal_(&n, &val, (sy->dbody)+(i*(sy->ld)), &ione);
573
590
  }
574
591
  } else {
575
- for ( int i=0; i<(sy->n); i++ ) {
576
- dscal_(&(sy->m), &val, (sy->dbody)+(i*(sy->ld)), &ione);
592
+ const int m=s2i(sy->m);
593
+ for ( size_t i=0; i<(sy->n); i++ ) {
594
+ dscal_(&m, &val, (sy->dbody)+(i*(sy->ld)), &ione);
577
595
  }
578
596
  }
579
597
  } else {
@@ -584,24 +602,26 @@ kmm_mat_s_div_destl(VALUE self, VALUE vval)
584
602
  if ( val == cpack(0.0, 0.0) ) { rb_raise(rb_eZeroDivError, "divided by 0"); }
585
603
  val = cpack(1.0, 0.0)/val;
586
604
  if ( sy->stype == ST_FULL ) {
587
- int len=LENGTH(sy), ione=1;
605
+ const int len=LENGTHi(sy), ione=1;
588
606
  zscal_(&len, &val, sy->zbody, &ione);
589
607
  } else if ( sy->stype == ST_SSUB ) {
590
- int ione=1;
608
+ const int ione=1;
591
609
  if ( sy->trans ) {
592
- for ( int i=0; i<(sy->m); i++ ) {
593
- zscal_(&(sy->n), &val, (sy->zbody)+(i*(sy->ld)), &ione);
610
+ const int n=s2i(sy->n);
611
+ for ( size_t i=0; i<(sy->m); i++ ) {
612
+ zscal_(&n, &val, (sy->zbody)+(i*(sy->ld)), &ione);
594
613
  }
595
614
  } else {
596
- for ( int i=0; i<(sy->n); i++ ) {
597
- zscal_(&(sy->m), &val, (sy->zbody)+(i*(sy->ld)), &ione);
615
+ const int m=s2i(sy->m);
616
+ for ( size_t i=0; i<(sy->n); i++ ) {
617
+ zscal_(&m, &val, (sy->zbody)+(i*(sy->ld)), &ione);
598
618
  }
599
619
  }
600
620
  } else {
601
621
  km_smat_each_z(sy, km_s_mul_z, (void *)&val);
602
622
  }
603
623
  } else if ( sy->vtype == VT_INT ) {
604
- int val = NUM2INT(vval);
624
+ const int val = NUM2INT(vval);
605
625
  if ( val == 0 ) { rb_raise(rb_eZeroDivError, "divided by 0"); }
606
626
  km_smat_each_i(sy, km_s_div_i, (void *)&val);
607
627
  } else if ( sy->vtype == VT_BOOL ) {
@@ -617,19 +637,19 @@ kmm_mat_s_div_destl(VALUE self, VALUE vval)
617
637
  static void
618
638
  km_add_times_d(double *y, double *x, void *data)
619
639
  {
620
- double *a = (double *)data;
640
+ const double *a = (double *)data;
621
641
  *y += ( (*x) * (*a) );
622
642
  }
623
643
  static void
624
644
  km_add_times_z(COMPLEX *y, COMPLEX *x, void *data)
625
645
  {
626
- COMPLEX *a = (COMPLEX *)data;
646
+ const COMPLEX *a = (COMPLEX *)data;
627
647
  *y += ( (*x) * (*a) );
628
648
  }
629
649
  static void
630
650
  km_add_times_i(int *y, int *x, void *data)
631
651
  {
632
- int *a = (int *)data;
652
+ const int *a = (int *)data;
633
653
  *y += ( (*x) * (*a) );
634
654
  }
635
655
  static void
@@ -649,53 +669,55 @@ kmm_mat_add_times_destl(VALUE self, VALUE other, VALUE valpha)
649
669
  }
650
670
  CHECK_SAME_SIZE(sx, sy);
651
671
  if ( sy->vtype == VT_DOUBLE ) {
652
- double alpha = NUM2DBL(valpha);
672
+ const double alpha = NUM2DBL(valpha);
653
673
  if ( sy->stype == ST_FULL && sx->stype == ST_FULL && sy->trans == sx->trans ) {
654
- int len = LENGTH(sy), ione=1;
674
+ const int len = LENGTHi(sy), ione=1;
655
675
  daxpy_(&len, &alpha, sx->dbody, &ione, sy->dbody, &ione);
656
676
  } else if ( sy->stype != ST_RSUB && sx->stype != ST_RSUB ) {
657
- int incy, stepy, incx, stepx;
677
+ int incy, incx; size_t stepx, stepy;
658
678
  if ( sy->trans ) {
659
- incy = sy->ld; stepy = 1;
679
+ incy = s2i(sy->ld); stepy = 1;
660
680
  } else {
661
681
  incy = 1; stepy = sy->ld;
662
682
  }
663
683
  if ( sx->trans ) {
664
- incx = sx->ld; stepx = 1;
684
+ incx = s2i(sx->ld); stepx = 1;
665
685
  } else {
666
686
  incx = 1; stepx = sx->ld;
667
687
  }
668
- for ( int i=0; i<(sy->n); i++ ) {
669
- daxpy_(&(sy->m), &alpha, (sx->dbody)+(i*stepx), &incx, (sy->dbody)+(i*stepy), &incy);
688
+ const int m=s2i(sy->m);
689
+ for ( size_t i=0; i<(sy->n); i++ ) {
690
+ daxpy_(&m, &alpha, (sx->dbody)+(i*stepx), &incx, (sy->dbody)+(i*stepy), &incy);
670
691
  }
671
692
  } else {
672
693
  km_smat_each2_d(sy, sx, km_add_times_d, (void *)&alpha);
673
694
  }
674
695
  } else if ( sy->vtype == VT_COMPLEX ) {
675
- COMPLEX alpha = km_v2c(valpha);
696
+ const COMPLEX alpha = km_v2c(valpha);
676
697
  if ( sy->stype == ST_FULL && sx->stype == ST_FULL && sy->trans == sx->trans ) {
677
- int len = LENGTH(sy), ione=1;
698
+ const int len = LENGTHi(sy), ione=1;
678
699
  zaxpy_(&len, &alpha, sx->zbody, &ione, sy->zbody, &ione);
679
700
  } else if ( sy->stype != ST_RSUB && sx->stype != ST_RSUB ) {
680
- int incy, stepy, incx, stepx;
701
+ int incy, incx; size_t stepx, stepy;
681
702
  if ( sy->trans ) {
682
- incy = sy->ld; stepy = 1;
703
+ incy = s2i(sy->ld); stepy = 1;
683
704
  } else {
684
705
  incy = 1; stepy = sy->ld;
685
706
  }
686
707
  if ( sx->trans ) {
687
- incx = sx->ld; stepx = 1;
708
+ incx = s2i(sx->ld); stepx = 1;
688
709
  } else {
689
710
  incx = 1; stepx = sx->ld;
690
711
  }
691
- for ( int i=0; i<(sy->n); i++ ) {
692
- zaxpy_(&(sy->m), &alpha, (sx->zbody)+(i*stepx), &incx, (sy->zbody)+(i*stepy), &incy);
712
+ const int m=s2i(sy->m);
713
+ for ( size_t i=0; i<(sy->n); i++ ) {
714
+ zaxpy_(&m, &alpha, (sx->zbody)+(i*stepx), &incx, (sy->zbody)+(i*stepy), &incy);
693
715
  }
694
716
  } else {
695
717
  km_smat_each2_z(sy, sx, km_add_times_z, (void *)&alpha);
696
718
  }
697
719
  } else if ( sy->vtype == VT_INT ) {
698
- int alpha = NUM2INT(valpha);
720
+ const int alpha = NUM2INT(valpha);
699
721
  km_smat_each2_i(sy, sx, km_add_times_i, (void *)&alpha);
700
722
  } else if ( sy->vtype == VT_BOOL ) {
701
723
  if ( RTEST(valpha) ) {
@@ -772,7 +794,7 @@ kmm_mat_maximum_destl(VALUE self, VALUE other)
772
794
  static void
773
795
  km_s_maximum_d(double *ey, void *data)
774
796
  {
775
- double *val = (double *)data;
797
+ const double *val = (double *)data;
776
798
  if ( *ey < *val ) {
777
799
  *ey = *val;
778
800
  }
@@ -780,7 +802,7 @@ km_s_maximum_d(double *ey, void *data)
780
802
  static void
781
803
  km_s_maximum_i(int *ey, void *data)
782
804
  {
783
- int *val = (int *)data;
805
+ const int *val = (int *)data;
784
806
  if ( *ey < *val ) {
785
807
  *ey = *val;
786
808
  }
@@ -788,7 +810,7 @@ km_s_maximum_i(int *ey, void *data)
788
810
  static void
789
811
  km_s_maximum_b(bool *ey, void *data)
790
812
  {
791
- bool *val = (bool *)data;
813
+ const bool *val = (bool *)data;
792
814
  if ( *val ) {
793
815
  *ey = true;
794
816
  }
@@ -796,7 +818,7 @@ km_s_maximum_b(bool *ey, void *data)
796
818
  static void
797
819
  km_s_maximum_v(VALUE *ey, void *data)
798
820
  {
799
- VALUE val = (VALUE)data;
821
+ const VALUE val = (VALUE)data;
800
822
  if ( rb_funcall(*ey, id_op_lt, 1, val) ) {
801
823
  *ey = val;
802
824
  }
@@ -888,7 +910,7 @@ kmm_mat_minimum_destl(VALUE self, VALUE other)
888
910
  static void
889
911
  km_s_minimum_d(double *ey, void *data)
890
912
  {
891
- double *val = (double *)data;
913
+ const double *val = (double *)data;
892
914
  if ( *val < *ey ) {
893
915
  *ey = *val;
894
916
  }
@@ -896,7 +918,7 @@ km_s_minimum_d(double *ey, void *data)
896
918
  static void
897
919
  km_s_minimum_i(int *ey, void *data)
898
920
  {
899
- int *val = (int *)data;
921
+ const int *val = (int *)data;
900
922
  if ( *val < *ey ) {
901
923
  *ey = *val;
902
924
  }
@@ -904,7 +926,7 @@ km_s_minimum_i(int *ey, void *data)
904
926
  static void
905
927
  km_s_minimum_b(bool *ey, void *data)
906
928
  {
907
- bool *val = (bool *)data;
929
+ const bool *val = (bool *)data;
908
930
  if ( !*val ) {
909
931
  *ey = false;
910
932
  }
@@ -912,7 +934,7 @@ km_s_minimum_b(bool *ey, void *data)
912
934
  static void
913
935
  km_s_minimum_v(VALUE *ey, void *data)
914
936
  {
915
- VALUE val = (VALUE)data;
937
+ const VALUE val = (VALUE)data;
916
938
  if ( rb_funcall(val, id_op_lt, 1, *ey) ) {
917
939
  *ey = val;
918
940
  }
@@ -1002,19 +1024,19 @@ kmm_mat_pow_destl(VALUE self, VALUE other)
1002
1024
  static void
1003
1025
  km_s_pow_d(double *b, void *data)
1004
1026
  {
1005
- double *e = (double *)data;
1027
+ const double *e = (double *)data;
1006
1028
  *b = pow(*b, *e);
1007
1029
  }
1008
1030
  static void
1009
1031
  km_s_pow_z(COMPLEX *b, void *data)
1010
1032
  {
1011
- COMPLEX *e = (COMPLEX *)data;
1033
+ const COMPLEX *e = (COMPLEX *)data;
1012
1034
  *b = cpow(*b, *e);
1013
1035
  }
1014
1036
  static void
1015
1037
  km_s_pow_i(int *b, void *data)
1016
1038
  {
1017
- int *e = (int *)data;
1039
+ const int *e = (int *)data;
1018
1040
  if ( *e < 0 ) {
1019
1041
  rb_raise(rb_const_get(rb_mMath, id_DomainError), "the exponent must be non-negative");
1020
1042
  }
@@ -1030,13 +1052,13 @@ km_s_pow_i(int *b, void *data)
1030
1052
  static void
1031
1053
  km_s_pow_b(bool *b, void *data)
1032
1054
  {
1033
- bool *e = (bool *)data;
1055
+ const bool *e = (bool *)data;
1034
1056
  *b = ( *b || !*e );
1035
1057
  }
1036
1058
  static void
1037
1059
  km_s_pow_v(VALUE *b, void *data)
1038
1060
  {
1039
- VALUE e = (VALUE)data;
1061
+ const VALUE e = (VALUE)data;
1040
1062
  *b = rb_funcall(*b, id_op_pow, 1, e);
1041
1063
  }
1042
1064
  VALUE
@@ -1091,13 +1113,13 @@ kmm_mat_hypot_destl(VALUE self, VALUE other)
1091
1113
  static void
1092
1114
  km_s_hypot_d(double *y, void *data)
1093
1115
  {
1094
- double *x = (double *)data;
1116
+ const double *x = (double *)data;
1095
1117
  *y = hypot(*y, *x);
1096
1118
  }
1097
1119
  static void
1098
1120
  km_s_hypot_z(COMPLEX *y, void *data)
1099
1121
  {
1100
- COMPLEX *x = (COMPLEX *)data;
1122
+ const COMPLEX *x = (COMPLEX *)data;
1101
1123
  *y = csqrt((*y)*(*y)+(*x)*(*x));
1102
1124
  }
1103
1125
  static void