random_variable 1.2.0 → 1.2.1

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.
Files changed (2) hide show
  1. data/lib/ext/random_variable.c +48 -1
  2. metadata +5 -5
@@ -269,6 +269,24 @@ static type_t type(VALUE rb_obj)
269
269
  /******************************************************************************/
270
270
  /* functions and macros for parameter validity checks */
271
271
  /******************************************************************************/
272
+ #define CHECK_NUMBER(x) \
273
+ do { \
274
+ \
275
+ if (isinf((x)) == 1) \
276
+ rb_raise(rb_eArgError, \
277
+ #x " parameter " \
278
+ "is Infinity"); \
279
+ if (isinf((x)) == -1) \
280
+ rb_raise(rb_eArgError, \
281
+ #x " parameter " \
282
+ "is -Infinity"); \
283
+ if (isnan((x))) \
284
+ rb_raise(rb_eArgError, \
285
+ #x " parameter " \
286
+ "is not a number" \
287
+ " (NaN)"); \
288
+ } while (0)
289
+
272
290
  #define CHECK_POSITIVE(x) \
273
291
  do { \
274
292
  if ((x) <= 0.0) \
@@ -376,6 +394,8 @@ VALUE rb_create_instance(VALUE rb_obj, ...)
376
394
 
377
395
  rb_p = GET_NEXT_ARG(ap);
378
396
  p = NUM2DBL(rb_p);
397
+
398
+ CHECK_NUMBER(p);
379
399
 
380
400
  /* 0 <= p <= 1 */
381
401
  CHECK_PROBABILITY(p);
@@ -397,6 +417,9 @@ VALUE rb_create_instance(VALUE rb_obj, ...)
397
417
  alpha = NUM2DBL(rb_alpha);
398
418
  beta = NUM2DBL(rb_beta);
399
419
 
420
+ CHECK_NUMBER(alpha);
421
+ CHECK_NUMBER(beta);
422
+
400
423
  /* alpha > 0 */
401
424
  CHECK_POSITIVE(alpha);
402
425
 
@@ -423,6 +446,8 @@ VALUE rb_create_instance(VALUE rb_obj, ...)
423
446
 
424
447
  n = NUM2LONG(rb_n);
425
448
  p = NUM2DBL(rb_p);
449
+
450
+ CHECK_NUMBER(p);
426
451
 
427
452
  /* n >= 0 */
428
453
  CHECK_NON_NEGATIVE(n);
@@ -467,6 +492,9 @@ VALUE rb_create_instance(VALUE rb_obj, ...)
467
492
  a = NUM2DBL(rb_a);
468
493
  b = NUM2DBL(rb_b);
469
494
 
495
+ CHECK_NUMBER(a);
496
+ CHECK_NUMBER(b);
497
+
470
498
  /* a < b */
471
499
  CHECK_LESS_THAN(a,b);
472
500
 
@@ -478,7 +506,7 @@ VALUE rb_create_instance(VALUE rb_obj, ...)
478
506
 
479
507
  CASE(discrete_uniform)
480
508
  VALUE rb_a, rb_b;
481
- double a,b;
509
+ long a,b;
482
510
 
483
511
  SET_KLASS(discrete_uniform);
484
512
 
@@ -509,6 +537,8 @@ VALUE rb_create_instance(VALUE rb_obj, ...)
509
537
  rb_mean = GET_NEXT_ARG(ap);
510
538
  mean = NUM2DBL(rb_mean);
511
539
 
540
+ CHECK_NUMBER(mean);
541
+
512
542
  /* mean > 0 */
513
543
  CHECK_POSITIVE(mean);
514
544
 
@@ -529,6 +559,9 @@ VALUE rb_create_instance(VALUE rb_obj, ...)
529
559
  d1 = NUM2DBL(rb_d1);
530
560
  d2 = NUM2DBL(rb_d2);
531
561
 
562
+ CHECK_NUMBER(d1);
563
+ CHECK_NUMBER(d2);
564
+
532
565
  /* d1 > 0 */
533
566
  /* d2 > 0 */
534
567
  CHECK_POSITIVE(d1);
@@ -555,6 +588,7 @@ VALUE rb_create_instance(VALUE rb_obj, ...)
555
588
  r = NUM2LONG(rb_r);
556
589
  p = NUM2DBL(rb_p);
557
590
 
591
+ CHECK_NUMBER(p);
558
592
  /* r > 0 */
559
593
  CHECK_POSITIVE(r);
560
594
  /* 0 < p < 0 */
@@ -576,8 +610,12 @@ VALUE rb_create_instance(VALUE rb_obj, ...)
576
610
 
577
611
  rb_mu = GET_NEXT_ARG(ap);
578
612
  rb_sigma = GET_NEXT_ARG(ap);
613
+
579
614
  mu = NUM2DBL(rb_mu);
580
615
  sigma = NUM2DBL(rb_sigma);
616
+
617
+ CHECK_NUMBER(mu);
618
+ CHECK_NUMBER(sigma);
581
619
 
582
620
  /* sigma > 0 */
583
621
  CHECK_POSITIVE(sigma);
@@ -600,6 +638,9 @@ VALUE rb_create_instance(VALUE rb_obj, ...)
600
638
  a = NUM2DBL(rb_a);
601
639
  m = NUM2DBL(rb_m);
602
640
 
641
+ CHECK_NUMBER(a);
642
+ CHECK_NUMBER(m);
643
+
603
644
  /* a > 0 */
604
645
  CHECK_POSITIVE(a);
605
646
 
@@ -620,6 +661,9 @@ VALUE rb_create_instance(VALUE rb_obj, ...)
620
661
 
621
662
  rb_mean = GET_NEXT_ARG(ap);
622
663
  mean = NUM2DBL(rb_mean);
664
+
665
+ CHECK_NUMBER(mean);
666
+
623
667
  /* mean > 0 */
624
668
  CHECK_POSITIVE(mean);
625
669
 
@@ -643,6 +687,8 @@ VALUE rb_create_instance(VALUE rb_obj, ...)
643
687
  rb_sigma = GET_NEXT_ARG(ap);
644
688
  sigma = NUM2DBL(rb_sigma);
645
689
 
690
+ CHECK_NUMBER(sigma);
691
+
646
692
  /* sigma > 0 */
647
693
  CHECK_POSITIVE(sigma);
648
694
 
@@ -663,6 +709,7 @@ VALUE rb_create_instance(VALUE rb_obj, ...)
663
709
  va_end(ap);
664
710
  return rb_rv;
665
711
  }
712
+ #undef CHECK_NUMBER
666
713
  #undef CHECK_POSITIVE
667
714
  #undef CHECK_NON_NEGATIVE
668
715
  #undef CHECK_LESS_THAN
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: random_variable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,10 +9,10 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-15 00:00:00.000000000 Z
12
+ date: 2012-12-20 00:00:00.000000000 Z
13
13
  dependencies: []
14
- description: Probability distributions such as the Binomial, Beta, Chi-Squared, Normal,
15
- Pareto, Poisson, etc.
14
+ description: ! 'random variables for a wide variety of probability distributions such
15
+ as: Binomial, Beta, Chi-Squared, Normal, Pareto, Poisson, etc.'
16
16
  email: jorge.madronal.rinaldi@gmail.com
17
17
  executables: []
18
18
  extensions:
@@ -59,5 +59,5 @@ rubyforge_project:
59
59
  rubygems_version: 1.8.24
60
60
  signing_key:
61
61
  specification_version: 3
62
- summary: Random Variables in Ruby for a wide variety of probability distributions
62
+ summary: Random Variables in Ruby
63
63
  test_files: []