wector 0.0.3 → 0.0.4
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.
- checksums.yaml +4 -4
- data/.travis.yml +8 -0
- data/README.md +1 -0
- data/Rakefile +4 -0
- data/lib/wector.rb +206 -195
- data/src/build.rb +19 -10
- data/src/test.erb +16 -0
- data/src/wector.erb +32 -0
- data/test/test_basic.rb +106 -100
- data/wector.gemspec +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0613c1e66c0f9851a255f769abe58b3f7f66b92f
|
4
|
+
data.tar.gz: f2aa4eee978e2b52983b2df26a5c944c9a888683
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1daeda348061db6b1f155933f94f80d700993a9ba9dbd0e38175aff5db4386b63e7330e0b616a1a343218f4be1224951575777c4793ef34b699c44fbb00b16ee
|
7
|
+
data.tar.gz: 0cd1e7cea379ae9c8731a63f12d4223ebce60efe9bc45610ce16e398d52280a0251b2348e979671df7184ecde3c5dd7683a8cc94c05d5411a3426369a9ade5cf
|
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# Wector
|
2
|
+
[](https://travis-ci.org/Qard/wector)
|
2
3
|
|
3
4
|
Wector does what we all wish the built-in Vector class did; it makes vector math easy by allowing any method of the Numeric interface to be used to combine two arrays or an array and a number.
|
4
5
|
|
data/Rakefile
CHANGED
data/lib/wector.rb
CHANGED
@@ -1,4 +1,8 @@
|
|
1
1
|
class Wector < Array
|
2
|
+
|
3
|
+
#
|
4
|
+
# wector.[]
|
5
|
+
#
|
2
6
|
def [](*args)
|
3
7
|
args.each do |arg|
|
4
8
|
raise "Non-numeric item" unless arg.is_a?(Integer) or arg.is_a?(Float)
|
@@ -371,60 +375,6 @@ class Wector < Array
|
|
371
375
|
end
|
372
376
|
end
|
373
377
|
|
374
|
-
#
|
375
|
-
# wector.gcd
|
376
|
-
#
|
377
|
-
# Arguments:
|
378
|
-
# other: (Array)
|
379
|
-
#
|
380
|
-
def gcd(other)
|
381
|
-
if other.is_a? Array
|
382
|
-
raise "Incorrect Dimensions" unless self.size == other.size
|
383
|
-
other = other.dup
|
384
|
-
self.class.new(map { |i| i.gcd other.shift })
|
385
|
-
elsif other.is_a?(Integer) or other.is_a?(Float)
|
386
|
-
self.class.new(map { |i| i.gcd other })
|
387
|
-
else
|
388
|
-
super
|
389
|
-
end
|
390
|
-
end
|
391
|
-
|
392
|
-
#
|
393
|
-
# wector.gcdlcm
|
394
|
-
#
|
395
|
-
# Arguments:
|
396
|
-
# other: (Array)
|
397
|
-
#
|
398
|
-
def gcdlcm(other)
|
399
|
-
if other.is_a? Array
|
400
|
-
raise "Incorrect Dimensions" unless self.size == other.size
|
401
|
-
other = other.dup
|
402
|
-
self.class.new(map { |i| i.gcdlcm other.shift })
|
403
|
-
elsif other.is_a?(Integer) or other.is_a?(Float)
|
404
|
-
self.class.new(map { |i| i.gcdlcm other })
|
405
|
-
else
|
406
|
-
super
|
407
|
-
end
|
408
|
-
end
|
409
|
-
|
410
|
-
#
|
411
|
-
# wector.lcm
|
412
|
-
#
|
413
|
-
# Arguments:
|
414
|
-
# other: (Array)
|
415
|
-
#
|
416
|
-
def lcm(other)
|
417
|
-
if other.is_a? Array
|
418
|
-
raise "Incorrect Dimensions" unless self.size == other.size
|
419
|
-
other = other.dup
|
420
|
-
self.class.new(map { |i| i.lcm other.shift })
|
421
|
-
elsif other.is_a?(Integer) or other.is_a?(Float)
|
422
|
-
self.class.new(map { |i| i.lcm other })
|
423
|
-
else
|
424
|
-
super
|
425
|
-
end
|
426
|
-
end
|
427
|
-
|
428
378
|
#
|
429
379
|
# wector.quo
|
430
380
|
#
|
@@ -443,24 +393,6 @@ class Wector < Array
|
|
443
393
|
end
|
444
394
|
end
|
445
395
|
|
446
|
-
#
|
447
|
-
# wector.rationalize
|
448
|
-
#
|
449
|
-
# Arguments:
|
450
|
-
# other: (Array)
|
451
|
-
#
|
452
|
-
def rationalize(other)
|
453
|
-
if other.is_a? Array
|
454
|
-
raise "Incorrect Dimensions" unless self.size == other.size
|
455
|
-
other = other.dup
|
456
|
-
self.class.new(map { |i| i.rationalize other.shift })
|
457
|
-
elsif other.is_a?(Integer) or other.is_a?(Float)
|
458
|
-
self.class.new(map { |i| i.rationalize other })
|
459
|
-
else
|
460
|
-
super
|
461
|
-
end
|
462
|
-
end
|
463
|
-
|
464
396
|
#
|
465
397
|
# wector.remainder
|
466
398
|
#
|
@@ -479,24 +411,6 @@ class Wector < Array
|
|
479
411
|
end
|
480
412
|
end
|
481
413
|
|
482
|
-
#
|
483
|
-
# wector.round
|
484
|
-
#
|
485
|
-
# Arguments:
|
486
|
-
# other: (Array)
|
487
|
-
#
|
488
|
-
def round(other)
|
489
|
-
if other.is_a? Array
|
490
|
-
raise "Incorrect Dimensions" unless self.size == other.size
|
491
|
-
other = other.dup
|
492
|
-
self.class.new(map { |i| i.round other.shift })
|
493
|
-
elsif other.is_a?(Integer) or other.is_a?(Float)
|
494
|
-
self.class.new(map { |i| i.round other })
|
495
|
-
else
|
496
|
-
super
|
497
|
-
end
|
498
|
-
end
|
499
|
-
|
500
414
|
|
501
415
|
#
|
502
416
|
# wector.ceil
|
@@ -512,62 +426,6 @@ class Wector < Array
|
|
512
426
|
self.class.new(map { |i| i.abs })
|
513
427
|
end
|
514
428
|
|
515
|
-
#
|
516
|
-
# wector.abs2
|
517
|
-
#
|
518
|
-
def abs2
|
519
|
-
self.class.new(map { |i| i.abs2 })
|
520
|
-
end
|
521
|
-
|
522
|
-
#
|
523
|
-
# wector.magnitude
|
524
|
-
#
|
525
|
-
def magnitude
|
526
|
-
self.class.new(map { |i| i.magnitude })
|
527
|
-
end
|
528
|
-
|
529
|
-
#
|
530
|
-
# wector.arg
|
531
|
-
#
|
532
|
-
def arg
|
533
|
-
self.class.new(map { |i| i.arg })
|
534
|
-
end
|
535
|
-
|
536
|
-
#
|
537
|
-
# wector.angle
|
538
|
-
#
|
539
|
-
def angle
|
540
|
-
self.class.new(map { |i| i.angle })
|
541
|
-
end
|
542
|
-
|
543
|
-
#
|
544
|
-
# wector.phase
|
545
|
-
#
|
546
|
-
def phase
|
547
|
-
self.class.new(map { |i| i.phase })
|
548
|
-
end
|
549
|
-
|
550
|
-
#
|
551
|
-
# wector.conj
|
552
|
-
#
|
553
|
-
def conj
|
554
|
-
self.class.new(map { |i| i.conj })
|
555
|
-
end
|
556
|
-
|
557
|
-
#
|
558
|
-
# wector.conjugate
|
559
|
-
#
|
560
|
-
def conjugate
|
561
|
-
self.class.new(map { |i| i.conjugate })
|
562
|
-
end
|
563
|
-
|
564
|
-
#
|
565
|
-
# wector.denominator
|
566
|
-
#
|
567
|
-
def denominator
|
568
|
-
self.class.new(map { |i| i.denominator })
|
569
|
-
end
|
570
|
-
|
571
429
|
#
|
572
430
|
# wector.even?
|
573
431
|
#
|
@@ -582,20 +440,6 @@ class Wector < Array
|
|
582
440
|
self.class.new(map { |i| i.floor })
|
583
441
|
end
|
584
442
|
|
585
|
-
#
|
586
|
-
# wector.imag
|
587
|
-
#
|
588
|
-
def imag
|
589
|
-
self.class.new(map { |i| i.imag })
|
590
|
-
end
|
591
|
-
|
592
|
-
#
|
593
|
-
# wector.imaginary
|
594
|
-
#
|
595
|
-
def imaginary
|
596
|
-
self.class.new(map { |i| i.imaginary })
|
597
|
-
end
|
598
|
-
|
599
443
|
#
|
600
444
|
# wector.integer?
|
601
445
|
#
|
@@ -617,20 +461,6 @@ class Wector < Array
|
|
617
461
|
self.class.new(map { |i| i.odd? })
|
618
462
|
end
|
619
463
|
|
620
|
-
#
|
621
|
-
# wector.numerator
|
622
|
-
#
|
623
|
-
def numerator
|
624
|
-
self.class.new(map { |i| i.numerator })
|
625
|
-
end
|
626
|
-
|
627
|
-
#
|
628
|
-
# wector.polar
|
629
|
-
#
|
630
|
-
def polar
|
631
|
-
self.class.new(map { |i| i.polar })
|
632
|
-
end
|
633
|
-
|
634
464
|
#
|
635
465
|
# wector.pred
|
636
466
|
#
|
@@ -638,27 +468,6 @@ class Wector < Array
|
|
638
468
|
self.class.new(map { |i| i.pred })
|
639
469
|
end
|
640
470
|
|
641
|
-
#
|
642
|
-
# wector.real
|
643
|
-
#
|
644
|
-
def real
|
645
|
-
self.class.new(map { |i| i.real })
|
646
|
-
end
|
647
|
-
|
648
|
-
#
|
649
|
-
# wector.real?
|
650
|
-
#
|
651
|
-
def real?
|
652
|
-
self.class.new(map { |i| i.real? })
|
653
|
-
end
|
654
|
-
|
655
|
-
#
|
656
|
-
# wector.rect
|
657
|
-
#
|
658
|
-
def rect
|
659
|
-
self.class.new(map { |i| i.rect })
|
660
|
-
end
|
661
|
-
|
662
471
|
#
|
663
472
|
# wector.truncate
|
664
473
|
#
|
@@ -673,6 +482,208 @@ class Wector < Array
|
|
673
482
|
self.class.new(map { |i| i.zero? })
|
674
483
|
end
|
675
484
|
|
485
|
+
|
486
|
+
# Only support 1.9+ features when available
|
487
|
+
v = RUBY_VERSION.split('.')
|
488
|
+
if v[0].to_i > 1 or v[1].to_i > 8
|
489
|
+
|
490
|
+
#
|
491
|
+
# wector.gcd
|
492
|
+
#
|
493
|
+
# Arguments:
|
494
|
+
# other: (Array)
|
495
|
+
#
|
496
|
+
def gcd(other)
|
497
|
+
if other.is_a? Array
|
498
|
+
raise "Incorrect Dimensions" unless self.size == other.size
|
499
|
+
other = other.dup
|
500
|
+
self.class.new(map { |i| i.gcd other.shift })
|
501
|
+
elsif other.is_a?(Integer) or other.is_a?(Float)
|
502
|
+
self.class.new(map { |i| i.gcd other })
|
503
|
+
else
|
504
|
+
super
|
505
|
+
end
|
506
|
+
end
|
507
|
+
|
508
|
+
#
|
509
|
+
# wector.gcdlcm
|
510
|
+
#
|
511
|
+
# Arguments:
|
512
|
+
# other: (Array)
|
513
|
+
#
|
514
|
+
def gcdlcm(other)
|
515
|
+
if other.is_a? Array
|
516
|
+
raise "Incorrect Dimensions" unless self.size == other.size
|
517
|
+
other = other.dup
|
518
|
+
self.class.new(map { |i| i.gcdlcm other.shift })
|
519
|
+
elsif other.is_a?(Integer) or other.is_a?(Float)
|
520
|
+
self.class.new(map { |i| i.gcdlcm other })
|
521
|
+
else
|
522
|
+
super
|
523
|
+
end
|
524
|
+
end
|
525
|
+
|
526
|
+
#
|
527
|
+
# wector.lcm
|
528
|
+
#
|
529
|
+
# Arguments:
|
530
|
+
# other: (Array)
|
531
|
+
#
|
532
|
+
def lcm(other)
|
533
|
+
if other.is_a? Array
|
534
|
+
raise "Incorrect Dimensions" unless self.size == other.size
|
535
|
+
other = other.dup
|
536
|
+
self.class.new(map { |i| i.lcm other.shift })
|
537
|
+
elsif other.is_a?(Integer) or other.is_a?(Float)
|
538
|
+
self.class.new(map { |i| i.lcm other })
|
539
|
+
else
|
540
|
+
super
|
541
|
+
end
|
542
|
+
end
|
543
|
+
|
544
|
+
#
|
545
|
+
# wector.rationalize
|
546
|
+
#
|
547
|
+
# Arguments:
|
548
|
+
# other: (Array)
|
549
|
+
#
|
550
|
+
def rationalize(other)
|
551
|
+
if other.is_a? Array
|
552
|
+
raise "Incorrect Dimensions" unless self.size == other.size
|
553
|
+
other = other.dup
|
554
|
+
self.class.new(map { |i| i.rationalize other.shift })
|
555
|
+
elsif other.is_a?(Integer) or other.is_a?(Float)
|
556
|
+
self.class.new(map { |i| i.rationalize other })
|
557
|
+
else
|
558
|
+
super
|
559
|
+
end
|
560
|
+
end
|
561
|
+
|
562
|
+
#
|
563
|
+
# wector.round
|
564
|
+
#
|
565
|
+
# Arguments:
|
566
|
+
# other: (Array)
|
567
|
+
#
|
568
|
+
def round(other)
|
569
|
+
if other.is_a? Array
|
570
|
+
raise "Incorrect Dimensions" unless self.size == other.size
|
571
|
+
other = other.dup
|
572
|
+
self.class.new(map { |i| i.round other.shift })
|
573
|
+
elsif other.is_a?(Integer) or other.is_a?(Float)
|
574
|
+
self.class.new(map { |i| i.round other })
|
575
|
+
else
|
576
|
+
super
|
577
|
+
end
|
578
|
+
end
|
579
|
+
|
580
|
+
|
581
|
+
#
|
582
|
+
# wector.abs2
|
583
|
+
#
|
584
|
+
def abs2
|
585
|
+
self.class.new(map { |i| i.abs2 })
|
586
|
+
end
|
587
|
+
|
588
|
+
#
|
589
|
+
# wector.arg
|
590
|
+
#
|
591
|
+
def arg
|
592
|
+
self.class.new(map { |i| i.arg })
|
593
|
+
end
|
594
|
+
|
595
|
+
#
|
596
|
+
# wector.angle
|
597
|
+
#
|
598
|
+
def angle
|
599
|
+
self.class.new(map { |i| i.angle })
|
600
|
+
end
|
601
|
+
|
602
|
+
#
|
603
|
+
# wector.conj
|
604
|
+
#
|
605
|
+
def conj
|
606
|
+
self.class.new(map { |i| i.conj })
|
607
|
+
end
|
608
|
+
|
609
|
+
#
|
610
|
+
# wector.conjugate
|
611
|
+
#
|
612
|
+
def conjugate
|
613
|
+
self.class.new(map { |i| i.conjugate })
|
614
|
+
end
|
615
|
+
|
616
|
+
#
|
617
|
+
# wector.denominator
|
618
|
+
#
|
619
|
+
def denominator
|
620
|
+
self.class.new(map { |i| i.denominator })
|
621
|
+
end
|
622
|
+
|
623
|
+
#
|
624
|
+
# wector.imag
|
625
|
+
#
|
626
|
+
def imag
|
627
|
+
self.class.new(map { |i| i.imag })
|
628
|
+
end
|
629
|
+
|
630
|
+
#
|
631
|
+
# wector.imaginary
|
632
|
+
#
|
633
|
+
def imaginary
|
634
|
+
self.class.new(map { |i| i.imaginary })
|
635
|
+
end
|
636
|
+
|
637
|
+
#
|
638
|
+
# wector.magnitude
|
639
|
+
#
|
640
|
+
def magnitude
|
641
|
+
self.class.new(map { |i| i.magnitude })
|
642
|
+
end
|
643
|
+
|
644
|
+
#
|
645
|
+
# wector.numerator
|
646
|
+
#
|
647
|
+
def numerator
|
648
|
+
self.class.new(map { |i| i.numerator })
|
649
|
+
end
|
650
|
+
|
651
|
+
#
|
652
|
+
# wector.phase
|
653
|
+
#
|
654
|
+
def phase
|
655
|
+
self.class.new(map { |i| i.phase })
|
656
|
+
end
|
657
|
+
|
658
|
+
#
|
659
|
+
# wector.polar
|
660
|
+
#
|
661
|
+
def polar
|
662
|
+
self.class.new(map { |i| i.polar })
|
663
|
+
end
|
664
|
+
|
665
|
+
#
|
666
|
+
# wector.real
|
667
|
+
#
|
668
|
+
def real
|
669
|
+
self.class.new(map { |i| i.real })
|
670
|
+
end
|
671
|
+
|
672
|
+
#
|
673
|
+
# wector.real?
|
674
|
+
#
|
675
|
+
def real?
|
676
|
+
self.class.new(map { |i| i.real? })
|
677
|
+
end
|
678
|
+
|
679
|
+
#
|
680
|
+
# wector.rect
|
681
|
+
#
|
682
|
+
def rect
|
683
|
+
self.class.new(map { |i| i.rect })
|
684
|
+
end
|
685
|
+
|
686
|
+
end
|
676
687
|
end
|
677
688
|
|
678
689
|
# Add interface to convert arrays to vectors
|
data/src/build.rb
CHANGED
@@ -5,14 +5,21 @@ operator_methods = [
|
|
5
5
|
]
|
6
6
|
|
7
7
|
comparison_methods = [
|
8
|
-
:modulo, :coerce, :div, :divmod, :eql?, :fdiv, :
|
9
|
-
:rationalize, :remainder, :round
|
8
|
+
:modulo, :coerce, :div, :divmod, :eql?, :fdiv, :quo, :remainder
|
10
9
|
]
|
11
10
|
|
12
11
|
transform_methods = [
|
13
|
-
:ceil, :abs, :
|
14
|
-
:
|
15
|
-
|
12
|
+
:ceil, :abs, :even?, :floor, :integer?, :nonzero?,
|
13
|
+
:odd?, :pred, :truncate, :zero?
|
14
|
+
]
|
15
|
+
|
16
|
+
new_comparison_methods = [
|
17
|
+
:gcd, :gcdlcm, :lcm, :rationalize, :round
|
18
|
+
]
|
19
|
+
|
20
|
+
new_transform_methods = [
|
21
|
+
:abs2, :arg, :angle, :conj, :conjugate, :denominator, :imag, :imaginary,
|
22
|
+
:magnitude, :numerator, :phase, :polar, :real, :real?, :rect
|
16
23
|
]
|
17
24
|
|
18
25
|
operator_tests = {
|
@@ -42,14 +49,16 @@ unary_operator_tests = {
|
|
42
49
|
plus: '+'
|
43
50
|
}
|
44
51
|
|
45
|
-
base_folder = File.
|
52
|
+
base_folder = File.dirname(__FILE__)
|
46
53
|
|
47
54
|
# Generate lib/wector.rb
|
48
|
-
File.open(File.join(base_folder, 'lib', 'wector.rb'), 'w') do |file|
|
49
|
-
|
55
|
+
File.open(File.join(base_folder, '..', 'lib', 'wector.rb'), 'w') do |file|
|
56
|
+
template = File.read(File.join(base_folder, 'wector.erb'))
|
57
|
+
file.write ERB.new(template, 0, "%<>").result
|
50
58
|
end
|
51
59
|
|
52
60
|
# Generate tests/basic.rb
|
53
|
-
File.open(File.join(base_folder, 'test', 'test_basic.rb'), 'w') do |file|
|
54
|
-
|
61
|
+
File.open(File.join(base_folder, '..', 'test', 'test_basic.rb'), 'w') do |file|
|
62
|
+
template = File.read(File.join(base_folder, 'test.erb'))
|
63
|
+
file.write ERB.new(template, 0, "%<>").result
|
55
64
|
end
|
data/src/test.erb
CHANGED
@@ -34,4 +34,20 @@ class BasicTest < Test::Unit::TestCase
|
|
34
34
|
assert_equal (nums.<%= name %>), nums.map { |v| v.<%= name %> }
|
35
35
|
end
|
36
36
|
<% end %>
|
37
|
+
|
38
|
+
# Only support 1.9+ features when available
|
39
|
+
v = RUBY_VERSION.split('.')
|
40
|
+
if v[0].to_i > 1 or v[1].to_i > 8
|
41
|
+
<% new_comparison_methods.each do |name| %>
|
42
|
+
def test_<%= name %>
|
43
|
+
nums = (1..100).to_a.to_wector
|
44
|
+
assert_equal (nums.<%= name %> nums), nums.map { |v| v.<%= name %> v }
|
45
|
+
end
|
46
|
+
<% end %><% new_transform_methods.each do |name| %>
|
47
|
+
def test_<%= name %>
|
48
|
+
nums = (1..100).to_a.to_wector
|
49
|
+
assert_equal (nums.<%= name %>), nums.map { |v| v.<%= name %> }
|
50
|
+
end
|
51
|
+
<% end %>
|
52
|
+
end
|
37
53
|
end
|
data/src/wector.erb
CHANGED
@@ -70,6 +70,38 @@ class Wector < Array
|
|
70
70
|
self.class.new(map { |i| i.<%= attr_name %> })
|
71
71
|
end
|
72
72
|
<% end %>
|
73
|
+
|
74
|
+
# Only support 1.9+ features when available
|
75
|
+
v = RUBY_VERSION.split('.')
|
76
|
+
if v[0].to_i > 1 or v[1].to_i > 8
|
77
|
+
<% new_comparison_methods.map { |v| v.to_s }.each do |attr_name| %>
|
78
|
+
#
|
79
|
+
# wector.<%= attr_name %>
|
80
|
+
#
|
81
|
+
# Arguments:
|
82
|
+
# other: (Array)
|
83
|
+
#
|
84
|
+
def <%= attr_name %>(other)
|
85
|
+
if other.is_a? Array
|
86
|
+
raise "Incorrect Dimensions" unless self.size == other.size
|
87
|
+
other = other.dup
|
88
|
+
self.class.new(map { |i| i.<%= attr_name %> other.shift })
|
89
|
+
elsif other.is_a?(Integer) or other.is_a?(Float)
|
90
|
+
self.class.new(map { |i| i.<%= attr_name %> other })
|
91
|
+
else
|
92
|
+
super
|
93
|
+
end
|
94
|
+
end
|
95
|
+
<% end %>
|
96
|
+
<% new_transform_methods.map { |v| v.to_s }.each do |attr_name| %>
|
97
|
+
#
|
98
|
+
# wector.<%= attr_name %>
|
99
|
+
#
|
100
|
+
def <%= attr_name %>
|
101
|
+
self.class.new(map { |i| i.<%= attr_name %> })
|
102
|
+
end
|
103
|
+
<% end %>
|
104
|
+
end
|
73
105
|
end
|
74
106
|
|
75
107
|
# Add interface to convert arrays to vectors
|
data/test/test_basic.rb
CHANGED
@@ -124,41 +124,16 @@ class BasicTest < Test::Unit::TestCase
|
|
124
124
|
assert_equal (nums.fdiv nums), nums.map { |v| v.fdiv v }
|
125
125
|
end
|
126
126
|
|
127
|
-
def test_gcd
|
128
|
-
nums = (1..100).to_a.to_wector
|
129
|
-
assert_equal (nums.gcd nums), nums.map { |v| v.gcd v }
|
130
|
-
end
|
131
|
-
|
132
|
-
def test_gcdlcm
|
133
|
-
nums = (1..100).to_a.to_wector
|
134
|
-
assert_equal (nums.gcdlcm nums), nums.map { |v| v.gcdlcm v }
|
135
|
-
end
|
136
|
-
|
137
|
-
def test_lcm
|
138
|
-
nums = (1..100).to_a.to_wector
|
139
|
-
assert_equal (nums.lcm nums), nums.map { |v| v.lcm v }
|
140
|
-
end
|
141
|
-
|
142
127
|
def test_quo
|
143
128
|
nums = (1..100).to_a.to_wector
|
144
129
|
assert_equal (nums.quo nums), nums.map { |v| v.quo v }
|
145
130
|
end
|
146
131
|
|
147
|
-
def test_rationalize
|
148
|
-
nums = (1..100).to_a.to_wector
|
149
|
-
assert_equal (nums.rationalize nums), nums.map { |v| v.rationalize v }
|
150
|
-
end
|
151
|
-
|
152
132
|
def test_remainder
|
153
133
|
nums = (1..100).to_a.to_wector
|
154
134
|
assert_equal (nums.remainder nums), nums.map { |v| v.remainder v }
|
155
135
|
end
|
156
136
|
|
157
|
-
def test_round
|
158
|
-
nums = (1..100).to_a.to_wector
|
159
|
-
assert_equal (nums.round nums), nums.map { |v| v.round v }
|
160
|
-
end
|
161
|
-
|
162
137
|
def test_ceil
|
163
138
|
nums = (1..100).to_a.to_wector
|
164
139
|
assert_equal (nums.ceil), nums.map { |v| v.ceil }
|
@@ -169,46 +144,6 @@ class BasicTest < Test::Unit::TestCase
|
|
169
144
|
assert_equal (nums.abs), nums.map { |v| v.abs }
|
170
145
|
end
|
171
146
|
|
172
|
-
def test_abs2
|
173
|
-
nums = (1..100).to_a.to_wector
|
174
|
-
assert_equal (nums.abs2), nums.map { |v| v.abs2 }
|
175
|
-
end
|
176
|
-
|
177
|
-
def test_magnitude
|
178
|
-
nums = (1..100).to_a.to_wector
|
179
|
-
assert_equal (nums.magnitude), nums.map { |v| v.magnitude }
|
180
|
-
end
|
181
|
-
|
182
|
-
def test_arg
|
183
|
-
nums = (1..100).to_a.to_wector
|
184
|
-
assert_equal (nums.arg), nums.map { |v| v.arg }
|
185
|
-
end
|
186
|
-
|
187
|
-
def test_angle
|
188
|
-
nums = (1..100).to_a.to_wector
|
189
|
-
assert_equal (nums.angle), nums.map { |v| v.angle }
|
190
|
-
end
|
191
|
-
|
192
|
-
def test_phase
|
193
|
-
nums = (1..100).to_a.to_wector
|
194
|
-
assert_equal (nums.phase), nums.map { |v| v.phase }
|
195
|
-
end
|
196
|
-
|
197
|
-
def test_conj
|
198
|
-
nums = (1..100).to_a.to_wector
|
199
|
-
assert_equal (nums.conj), nums.map { |v| v.conj }
|
200
|
-
end
|
201
|
-
|
202
|
-
def test_conjugate
|
203
|
-
nums = (1..100).to_a.to_wector
|
204
|
-
assert_equal (nums.conjugate), nums.map { |v| v.conjugate }
|
205
|
-
end
|
206
|
-
|
207
|
-
def test_denominator
|
208
|
-
nums = (1..100).to_a.to_wector
|
209
|
-
assert_equal (nums.denominator), nums.map { |v| v.denominator }
|
210
|
-
end
|
211
|
-
|
212
147
|
def test_even?
|
213
148
|
nums = (1..100).to_a.to_wector
|
214
149
|
assert_equal (nums.even?), nums.map { |v| v.even? }
|
@@ -219,16 +154,6 @@ class BasicTest < Test::Unit::TestCase
|
|
219
154
|
assert_equal (nums.floor), nums.map { |v| v.floor }
|
220
155
|
end
|
221
156
|
|
222
|
-
def test_imag
|
223
|
-
nums = (1..100).to_a.to_wector
|
224
|
-
assert_equal (nums.imag), nums.map { |v| v.imag }
|
225
|
-
end
|
226
|
-
|
227
|
-
def test_imaginary
|
228
|
-
nums = (1..100).to_a.to_wector
|
229
|
-
assert_equal (nums.imaginary), nums.map { |v| v.imaginary }
|
230
|
-
end
|
231
|
-
|
232
157
|
def test_integer?
|
233
158
|
nums = (1..100).to_a.to_wector
|
234
159
|
assert_equal (nums.integer?), nums.map { |v| v.integer? }
|
@@ -244,36 +169,11 @@ class BasicTest < Test::Unit::TestCase
|
|
244
169
|
assert_equal (nums.odd?), nums.map { |v| v.odd? }
|
245
170
|
end
|
246
171
|
|
247
|
-
def test_numerator
|
248
|
-
nums = (1..100).to_a.to_wector
|
249
|
-
assert_equal (nums.numerator), nums.map { |v| v.numerator }
|
250
|
-
end
|
251
|
-
|
252
|
-
def test_polar
|
253
|
-
nums = (1..100).to_a.to_wector
|
254
|
-
assert_equal (nums.polar), nums.map { |v| v.polar }
|
255
|
-
end
|
256
|
-
|
257
172
|
def test_pred
|
258
173
|
nums = (1..100).to_a.to_wector
|
259
174
|
assert_equal (nums.pred), nums.map { |v| v.pred }
|
260
175
|
end
|
261
176
|
|
262
|
-
def test_real
|
263
|
-
nums = (1..100).to_a.to_wector
|
264
|
-
assert_equal (nums.real), nums.map { |v| v.real }
|
265
|
-
end
|
266
|
-
|
267
|
-
def test_real?
|
268
|
-
nums = (1..100).to_a.to_wector
|
269
|
-
assert_equal (nums.real?), nums.map { |v| v.real? }
|
270
|
-
end
|
271
|
-
|
272
|
-
def test_rect
|
273
|
-
nums = (1..100).to_a.to_wector
|
274
|
-
assert_equal (nums.rect), nums.map { |v| v.rect }
|
275
|
-
end
|
276
|
-
|
277
177
|
def test_truncate
|
278
178
|
nums = (1..100).to_a.to_wector
|
279
179
|
assert_equal (nums.truncate), nums.map { |v| v.truncate }
|
@@ -284,4 +184,110 @@ class BasicTest < Test::Unit::TestCase
|
|
284
184
|
assert_equal (nums.zero?), nums.map { |v| v.zero? }
|
285
185
|
end
|
286
186
|
|
187
|
+
|
188
|
+
# Only support 1.9+ features when available
|
189
|
+
v = RUBY_VERSION.split('.')
|
190
|
+
if v[0].to_i > 1 or v[1].to_i > 8
|
191
|
+
|
192
|
+
def test_gcd
|
193
|
+
nums = (1..100).to_a.to_wector
|
194
|
+
assert_equal (nums.gcd nums), nums.map { |v| v.gcd v }
|
195
|
+
end
|
196
|
+
|
197
|
+
def test_gcdlcm
|
198
|
+
nums = (1..100).to_a.to_wector
|
199
|
+
assert_equal (nums.gcdlcm nums), nums.map { |v| v.gcdlcm v }
|
200
|
+
end
|
201
|
+
|
202
|
+
def test_lcm
|
203
|
+
nums = (1..100).to_a.to_wector
|
204
|
+
assert_equal (nums.lcm nums), nums.map { |v| v.lcm v }
|
205
|
+
end
|
206
|
+
|
207
|
+
def test_rationalize
|
208
|
+
nums = (1..100).to_a.to_wector
|
209
|
+
assert_equal (nums.rationalize nums), nums.map { |v| v.rationalize v }
|
210
|
+
end
|
211
|
+
|
212
|
+
def test_round
|
213
|
+
nums = (1..100).to_a.to_wector
|
214
|
+
assert_equal (nums.round nums), nums.map { |v| v.round v }
|
215
|
+
end
|
216
|
+
|
217
|
+
def test_abs2
|
218
|
+
nums = (1..100).to_a.to_wector
|
219
|
+
assert_equal (nums.abs2), nums.map { |v| v.abs2 }
|
220
|
+
end
|
221
|
+
|
222
|
+
def test_arg
|
223
|
+
nums = (1..100).to_a.to_wector
|
224
|
+
assert_equal (nums.arg), nums.map { |v| v.arg }
|
225
|
+
end
|
226
|
+
|
227
|
+
def test_angle
|
228
|
+
nums = (1..100).to_a.to_wector
|
229
|
+
assert_equal (nums.angle), nums.map { |v| v.angle }
|
230
|
+
end
|
231
|
+
|
232
|
+
def test_conj
|
233
|
+
nums = (1..100).to_a.to_wector
|
234
|
+
assert_equal (nums.conj), nums.map { |v| v.conj }
|
235
|
+
end
|
236
|
+
|
237
|
+
def test_conjugate
|
238
|
+
nums = (1..100).to_a.to_wector
|
239
|
+
assert_equal (nums.conjugate), nums.map { |v| v.conjugate }
|
240
|
+
end
|
241
|
+
|
242
|
+
def test_denominator
|
243
|
+
nums = (1..100).to_a.to_wector
|
244
|
+
assert_equal (nums.denominator), nums.map { |v| v.denominator }
|
245
|
+
end
|
246
|
+
|
247
|
+
def test_imag
|
248
|
+
nums = (1..100).to_a.to_wector
|
249
|
+
assert_equal (nums.imag), nums.map { |v| v.imag }
|
250
|
+
end
|
251
|
+
|
252
|
+
def test_imaginary
|
253
|
+
nums = (1..100).to_a.to_wector
|
254
|
+
assert_equal (nums.imaginary), nums.map { |v| v.imaginary }
|
255
|
+
end
|
256
|
+
|
257
|
+
def test_magnitude
|
258
|
+
nums = (1..100).to_a.to_wector
|
259
|
+
assert_equal (nums.magnitude), nums.map { |v| v.magnitude }
|
260
|
+
end
|
261
|
+
|
262
|
+
def test_numerator
|
263
|
+
nums = (1..100).to_a.to_wector
|
264
|
+
assert_equal (nums.numerator), nums.map { |v| v.numerator }
|
265
|
+
end
|
266
|
+
|
267
|
+
def test_phase
|
268
|
+
nums = (1..100).to_a.to_wector
|
269
|
+
assert_equal (nums.phase), nums.map { |v| v.phase }
|
270
|
+
end
|
271
|
+
|
272
|
+
def test_polar
|
273
|
+
nums = (1..100).to_a.to_wector
|
274
|
+
assert_equal (nums.polar), nums.map { |v| v.polar }
|
275
|
+
end
|
276
|
+
|
277
|
+
def test_real
|
278
|
+
nums = (1..100).to_a.to_wector
|
279
|
+
assert_equal (nums.real), nums.map { |v| v.real }
|
280
|
+
end
|
281
|
+
|
282
|
+
def test_real?
|
283
|
+
nums = (1..100).to_a.to_wector
|
284
|
+
assert_equal (nums.real?), nums.map { |v| v.real? }
|
285
|
+
end
|
286
|
+
|
287
|
+
def test_rect
|
288
|
+
nums = (1..100).to_a.to_wector
|
289
|
+
assert_equal (nums.rect), nums.map { |v| v.rect }
|
290
|
+
end
|
291
|
+
|
292
|
+
end
|
287
293
|
end
|
data/wector.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wector
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen Belanger
|
@@ -48,6 +48,7 @@ extensions: []
|
|
48
48
|
extra_rdoc_files: []
|
49
49
|
files:
|
50
50
|
- .gitignore
|
51
|
+
- .travis.yml
|
51
52
|
- Gemfile
|
52
53
|
- LICENSE.txt
|
53
54
|
- README.md
|