M500 0.9.5 → 0.9.6

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 (3) hide show
  1. checksums.yaml +5 -5
  2. data/lib/m500.rb +104 -79
  3. metadata +6 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: ac4623172c8c3593148e5d41021c7e6af22b5cde
4
- data.tar.gz: 81508c65134aac2effd6d6c26c7d16254dc53cf9
2
+ SHA256:
3
+ metadata.gz: 2dc24579fe7c9767f59040551729b3ba6b218e1031e030337d7e2e291839361b
4
+ data.tar.gz: f57431bbd2ed5c261e44ab1a31ca41eb685531b11e0fac126714119c004d4fdc
5
5
  SHA512:
6
- metadata.gz: '0903c099d74d1148920d289fc9710e061f05200546e74b1b680bbff5c477f978e2f2dea898848b14a1c6add45469bf747f838edfa7960615ef2483a75ef69c73'
7
- data.tar.gz: 7e3912857a7f424725749fe6bcb1ad14df71334e53f537e6e65a58321dba1f3488d4794a7dde99ecf8d155a3235350cfab6bfd2ee65caf6c28c0327e17bb3684
6
+ metadata.gz: a4f951a70a40917ee45ca1ae515a977c459c8e54f3f8f9fc50c0bca24bff3a9c6d7572adcda48afc0e872ce64334fa9901129e79950df3520b1596fbdceff174
7
+ data.tar.gz: 7abff1db81d08621b76323450d904f8b990015c7e3762dc4b9a266e17a446055c9cf57f8fb5bccb5e9cdcde12ef2b815ee5ecab0e2510c589b077ff5e15a4c49
@@ -1,9 +1,12 @@
1
+ # -*- coding: utf-8 -*-
1
2
  #
2
3
  # M500.rb -
3
4
  # $Release Version: 0.9 $
4
- # $Revision: 1.47 $
5
+ # $Revision: 1.48 $
5
6
  # by mark ingram
6
7
  #
8
+ # Ruby 2.4 depcrecated Fixnum and Bignum
9
+ # Attempt to use Integer instead
7
10
  # --
8
11
  #
9
12
  #
@@ -114,7 +117,7 @@ class String
114
117
  def is_R?
115
118
  false
116
119
  end
117
- def to_N
120
+ def to_N
118
121
  re = /(^[0-9]+)/
119
122
  md = re.match(self.to_s)
120
123
  t = emptySet
@@ -135,7 +138,7 @@ class String
135
138
  def to_Q
136
139
  re = /(-?[0-9]+)\/([0-9]+)/
137
140
  md = re.match(self.to_s)
138
- ret = naught
141
+ ret = emptySet
139
142
  if md then
140
143
  t = 1
141
144
  Natural(md[2].to_i).kind_of?(EmptySetClass) ? ret = infinity : ret = Quotient(Zahlen(md[1].to_i),Natural(md[2].to_i))
@@ -321,6 +324,7 @@ class Numeric
321
324
  end
322
325
  end
323
326
  end
327
+ =begin
324
328
  class Fixnum
325
329
  include SGML
326
330
  def to_sgml
@@ -373,10 +377,11 @@ class Fixnum
373
377
  naught
374
378
  end
375
379
  end
376
- class Bignum
380
+ =end
381
+ class Integer
377
382
  include SGML
378
383
  def to_sgml
379
- "<mn #{sgml_id}class='rational'>#{self.to_s}</mn>"
384
+ "<mn #{sgml_id}class='integer'>#{self.to_s}</mn>"
380
385
  end
381
386
  unless defined? Complex
382
387
  alias power! **
@@ -400,13 +405,13 @@ class Bignum
400
405
  self === 0 ? true : false
401
406
  end
402
407
  def to_N
403
- self < 0 ? Natural(self) : emptySet
408
+ self > 0 ? Natural(self) : emptySet
404
409
  end
405
410
  def to_N0
406
- self <= 0 ? Counting(self) : emptySet
411
+ self >= 0 ? Counting(self) : emptySet
407
412
  end
408
413
  def to_Z
409
- Zahlen(self)
414
+ Zahlen(self)
410
415
  end
411
416
  def to_Frac
412
417
  Fraction(self,Quotient(1,1))
@@ -498,6 +503,7 @@ class Rational
498
503
  end
499
504
  end
500
505
  class ST<Numeric
506
+ =begin
501
507
  def initialize(a,b=0,c='t') # a*(c) + b
502
508
  if a.kind_of?(String)
503
509
  regex = /(\d+[a-z])*(\+)?(\d+)?/
@@ -552,6 +558,7 @@ class ST<Numeric
552
558
  def inspect
553
559
  "'#{@a.at(0)}#{@a.at(2)}+#{@a.at(1)}'.to_ST"
554
560
  end
561
+ =end
555
562
  end
556
563
  def naught
557
564
  NaughtClass.new!
@@ -574,7 +581,7 @@ def Natural(a)
574
581
  infinity
575
582
  elsif (a.kind_of?(String))
576
583
  Natural.new!(a.to_i)
577
- elsif (a.kind_of?(Fixnum) && a >= 1) or (a.kind_of?(Bignum) && a >= 1)
584
+ elsif (a.kind_of?(Integer) && a >= 1) #(a.kind_of?(Fixnum) && a >= 1) or (a.kind_of?(Bignum) && a >= 1)
578
585
  Natural.new!(a)
579
586
  elsif a.kind_of?(Numeric)
580
587
  a.send :to_N
@@ -583,7 +590,7 @@ def Natural(a)
583
590
  end
584
591
  end
585
592
  def Counting(a)
586
- if (a.kind_of?(Fixnum) && a >= 0) or (a.kind_of?(Bignum) && a >= 0)
593
+ if (a.kind_of?(Integer) && a >= 0) #(a.kind_of?(Fixnum) && a >= 0) or (a.kind_of?(Bignum) && a >= 0)
587
594
  Counting.new!(a)
588
595
  elsif (a.kind_of?(EmptySetClass))
589
596
  emptySet
@@ -596,20 +603,18 @@ def Counting(a)
596
603
  elsif a.kind_of?(Numeric)
597
604
  a.send :to_N0
598
605
  else
599
- EmptySet
606
+ emptySet
600
607
  end
601
608
  end
602
609
  def Zahlen(a)
603
- if a.kind_of?(Zahlen)
604
- a
610
+ if a.kind_of?(Integer)
611
+ Zahlen.new!(a)
605
612
  elsif (a.kind_of?(EmptySetClass))
606
613
  emptySet
607
614
  elsif (a.kind_of?(NaughtClass))
608
615
  Zahlen.new!(0)
609
616
  elsif (a.kind_of?(InfinityClass))
610
617
  infinity
611
- elsif a.kind_of?(Fixnum) or a.kind_of?(Bignum)
612
- Zahlen.new!(a)
613
618
  elsif a.kind_of?(Numeric)
614
619
  a.send :to_Z
615
620
  else
@@ -644,11 +649,7 @@ def Quotient(a,b=1)
644
649
  elsif b.kind_of?(Quotient) && a == 1
645
650
  Quotient.new!(b.denominator,b.numerator)
646
651
  elsif Zahlen(a).kind_of?(Numeric) and Natural(b).kind_of?(Numeric)
647
- unless a == b
648
- Quotient.new!(Zahlen(a),Natural(b))
649
- else
650
652
  Quotient.new!(Zahlen(a),Natural(b))
651
- end
652
653
  elsif a.kind_of?(Quotient) && b.kind_of?(Quotient)
653
654
  return a/b
654
655
  elsif a.kind_of?(Numeric)
@@ -706,7 +707,7 @@ def Decimal(a,b=nil,c='0',d=0,e=1)
706
707
  infinity
707
708
  elsif a.kind_of?(String)
708
709
  a.to_Dec
709
- elsif (a.kind_of?(Fixnum) or a.kind_of?(Bignum)) and (b.kind_of?(Fixnum) or b.kind_of?(Bignum))
710
+ elsif a.kind_of?(Integer) #(a.kind_of?(Fixnum) or a.kind_of?(Bignum)) and (b.kind_of?(Fixnum) or b.kind_of?(Bignum))
710
711
  if e<0 then
711
712
  Decimal.new!(a,b,c,d,-1)
712
713
  else
@@ -718,7 +719,7 @@ def Decimal(a,b=nil,c='0',d=0,e=1)
718
719
  Decimal.new!(0,b,c,d,1)
719
720
  end
720
721
  end
721
- elsif (a.kind_of?(Fixnum) or a.kind_of?(Bignum)) and b.nil?
722
+ elsif (a.kind_of?(Integer) and b.nil?) #(a.kind_of?(Fixnum) or a.kind_of?(Bignum)) and b.nil?
722
723
  if e<0 then
723
724
  Decimal.new!(a,b,c,d,-1)
724
725
  else
@@ -746,7 +747,7 @@ def Kettenbruch(a,b='',c=1,leicht=true)
746
747
  a.to_K
747
748
  elsif a.kind_of?(Proc)
748
749
  a
749
- elsif (a.kind_of?(Fixnum) or a.kind_of?(Bignum)) and b.kind_of?(String)
750
+ elsif (a.kind_of?(Integer) and b.kind_of?(String)) # (a.kind_of?(Fixnum) or a.kind_of?(Bignum)) and b.kind_of?(String)
750
751
  if (a>0 and c<0) or (a<0 and c>0) then
751
752
  Kettenbruch.new!(a,b,-1)
752
753
  else
@@ -784,7 +785,7 @@ class Natural < Numeric
784
785
  end
785
786
  private_class_method :new
786
787
  def initialize(a)
787
- if (a.kind_of?(Fixnum) && a >= 1) or (a.kind_of?(Bignum) && a >= 1)
788
+ if (a.kind_of?(Integer) && a >= 1) #(a.kind_of?(Fixnum) && a >= 1) or (a.kind_of?(Bignum) && a >= 1)
788
789
  @a = a
789
790
  else
790
791
  emptySet
@@ -792,7 +793,7 @@ class Natural < Numeric
792
793
  end
793
794
  private :initialize
794
795
  def + (a)
795
- if a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Bignum) or a.kind_of?(Fixnum)
796
+ if a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Integer)#a.kind_of?(Bignum) or a.kind_of?(Fixnum)
796
797
  Natural(self.to_i + a.to_i)
797
798
  elsif a.kind_of?(NaughtClass) or a.kind_of?(EmptySetClass) or a.kind_of?(NilClass)
798
799
  self
@@ -806,7 +807,7 @@ class Natural < Numeric
806
807
  end
807
808
  end
808
809
  def - (a)
809
- if a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Bignum) or a.kind_of?(Fixnum)
810
+ if a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Integer) # a.kind_of?(Bignum) or a.kind_of?(Fixnum)
810
811
  z = @a.to_i - a.to_i
811
812
  z <= 0 ? emptySet : Natural(z)
812
813
  elsif a.kind_of?(NaughtClass) or a.kind_of?(EmptySetClass)
@@ -819,7 +820,7 @@ class Natural < Numeric
819
820
  end
820
821
  end
821
822
  def * (a)
822
- if a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Bignum) or a.kind_of?(Fixnum)
823
+ if a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Integer) #a.kind_of?(Bignum) or a.kind_of?(Fixnum)
823
824
  Natural(@a * a.to_i)
824
825
  elsif a.kind_of?(NaughtClass) or a.kind_of?(EmptySetClass)
825
826
  naught
@@ -831,7 +832,7 @@ class Natural < Numeric
831
832
  end
832
833
  end
833
834
  def / (a)
834
- if a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Bignum) or a.kind_of?(Fixnum)
835
+ if a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Integer) #a.kind_of?(Bignum) or a.kind_of?(Fixnum)
835
836
  Natural(self.to_i / a.to_i)
836
837
  elsif a.kind_of?(NaughtClass) or a.kind_of?(EmptySetClass)
837
838
  infinity
@@ -841,7 +842,7 @@ class Natural < Numeric
841
842
  end
842
843
  end
843
844
  def ** (a)
844
- if a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Bignum) or a.kind_of?(Fixnum)
845
+ if a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Integer) #a.kind_of?(Bignum) or a.kind_of?(Fixnum)
845
846
  Natural(self.to_i ** a.to_i)
846
847
  else
847
848
  x, y = a.coerce(self)
@@ -873,7 +874,7 @@ class Natural < Numeric
873
874
  self.to_i <=> other.to_i
874
875
  end
875
876
  def coerce(other)
876
- if Fixnum === other or Bignum === other
877
+ if Integer === other #Fixnum === other or Bignum === other
877
878
  other <= 0 ? [emptySet,emptySet] : [other.to_N,self]
878
879
  elsif Natural === other or Counting === other or Zahlen === other
879
880
  other <= 0 ? [emptySet,emptySet] : [other,self.to_Z]
@@ -894,11 +895,8 @@ class Natural < Numeric
894
895
  def to_f
895
896
  @a.to_f
896
897
  end
897
- def to_s!
898
- "Natural(#{@a})"
899
- end
900
898
  def to_s
901
- @a.to_s
899
+ "Natural(#{@a})"
902
900
  end
903
901
  def to_Q
904
902
  Quotient(self, 1)
@@ -1012,11 +1010,11 @@ class Natural < Numeric
1012
1010
  rz = 0
1013
1011
  rx = []
1014
1012
  r.each{|r4|
1015
- rx << eval("k=0;#{r4}") }
1013
+ rx << instance_eval("k=0;#{r4}") }
1016
1014
  ry = rx.max
1017
1015
  (0..m).to_a.each{|k|
1018
1016
  r.each{|r4|
1019
- r0 << eval("k=#{k};#{r4}")
1017
+ r0 << instance_eval("k=#{k};#{r4}")
1020
1018
  }
1021
1019
  rz= r0.max
1022
1020
  res = res + r0
@@ -1081,11 +1079,8 @@ class NaughtClass
1081
1079
  def to_f
1082
1080
  0.0
1083
1081
  end
1084
- def to_s!
1085
- "naught"
1086
- end
1087
1082
  def to_s
1088
- "0"
1083
+ "naught"
1089
1084
  end
1090
1085
  def to_N
1091
1086
  emptySet
@@ -1123,12 +1118,36 @@ class EmptySetClass < NaughtClass
1123
1118
  def to_sgml
1124
1119
  "<mn #{sgml_id}class='empty'>&empty</mn>"
1125
1120
  end
1126
- def to_s!
1127
- "{}"
1128
- end
1129
1121
  def to_s
1130
1122
  "\u2205".encode('utf-8')
1131
1123
  end
1124
+ def to_N
1125
+ self.to_s
1126
+ end
1127
+ def to_N0
1128
+ self.to_s
1129
+ end
1130
+ def to_Z
1131
+ self.to_s
1132
+ end
1133
+ def to_Frac
1134
+ self.to_s
1135
+ end
1136
+ def to_Q
1137
+ self.to_s
1138
+ end
1139
+ def to_Dec
1140
+ self.to_s
1141
+ end
1142
+ def to_Sig
1143
+ self.to_s
1144
+ end
1145
+ def to_K
1146
+ self.to_s
1147
+ end
1148
+ def to_R
1149
+ self.to_s
1150
+ end
1132
1151
  end
1133
1152
  class NANClass < NaughtClass
1134
1153
  include SGML
@@ -1172,9 +1191,6 @@ class InfinityClass
1172
1191
  def to_f
1173
1192
  nil
1174
1193
  end
1175
- def to_s!
1176
- "infinity"
1177
- end
1178
1194
  def to_s
1179
1195
  "\u221E".encode('utf-8')
1180
1196
  end
@@ -1227,13 +1243,13 @@ class Counting < Natural
1227
1243
  def initialize(a)
1228
1244
  if (a.kind_of?(Counting))
1229
1245
  @a = a.to_i
1230
- elsif a.kind_of?(Fixnum) or a.kind_of?(Bignum)
1246
+ elsif a.kind_of?(Integer) #a.kind_of?(Fixnum) or a.kind_of?(Bignum)
1231
1247
  @a = a
1232
1248
  else
1233
1249
  end
1234
1250
  end
1235
1251
  def + (a)
1236
- if a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Bignum) or a.kind_of?(Fixnum)
1252
+ if a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Integer) #a.kind_of?(Bignum) or a.kind_of?(Fixnum)
1237
1253
  Counting(@a+a)
1238
1254
  elsif a.kind_of?(Decimal) or a.kind_of?(Quotient) or a.kind_of?(Fraction)
1239
1255
  Counting(@a+a.to_N0)
@@ -1247,7 +1263,7 @@ class Counting < Natural
1247
1263
  end
1248
1264
  end
1249
1265
  def - (a)
1250
- if a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Bignum) or a.kind_of?(Fixnum)
1266
+ if a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Integer) #a.kind_of?(Bignum) or a.kind_of?(Fixnum)
1251
1267
  @a-a < 0 ? emptySet : Counting(@a-a)
1252
1268
  elsif a.kind_of?(NaughtClass) or a.kind_of?(EmptySetClass)
1253
1269
  self
@@ -1260,7 +1276,7 @@ class Counting < Natural
1260
1276
  end
1261
1277
  def * (a)
1262
1278
  t = nil
1263
- if a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Bignum) or a.kind_of?(Fixnum)
1279
+ if a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Integer) # or a.kind_of?(Bignum) or a.kind_of?(Fixnum)
1264
1280
  a < 0 ? emptySet : Counting(@a*a)
1265
1281
  elsif a.kind_of?(NaughtClass) or a.kind_of?(EmptySetClass)
1266
1282
  naught
@@ -1274,13 +1290,14 @@ class Counting < Natural
1274
1290
  def / (a)
1275
1291
  if (a.kind_of?(Counting) or a.kind_of?(Natural)) and (self.to_i%(a.to_i) == 0)
1276
1292
  a < 0 ? emptySet : Counting(@a/ a)
1277
- else
1278
- x, y = a.coerce(self)
1279
- y < 0 ? emptySet : Counting(x/y)
1293
+ else #not divisable so will not be whole number return emptySet
1294
+ #y < 0 ? emptySet : Counting(x/y)
1295
+ #x, y = a.coerce(self)
1296
+ return emptySet
1280
1297
  end
1281
1298
  end
1282
1299
  def ** (a)
1283
- if a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Bignum) or a.kind_of?(Fixnum)
1300
+ if a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Integer) #a.kind_of?(Bignum) or a.kind_of?(Fixnum)
1284
1301
  Counting(self.to_i ** a.to_i)
1285
1302
  else
1286
1303
  x, y = a.coerce(self)
@@ -1338,11 +1355,8 @@ class Counting < Natural
1338
1355
  def to_f
1339
1356
  @a.to_f
1340
1357
  end
1341
- def to_s!
1342
- "Counting(#{@a})"
1343
- end
1344
1358
  def to_s
1345
- @a.to_s
1359
+ "Counting(#{@a})"
1346
1360
  end
1347
1361
  def to_N
1348
1362
  Natural(@a)
@@ -1386,13 +1400,13 @@ class Zahlen < Counting
1386
1400
  def initialize(a)
1387
1401
  if (a.kind_of?(Zahlen))
1388
1402
  @a = a.to_i
1389
- elsif a.kind_of?(Fixnum) or a.kind_of?(Bignum)
1403
+ elsif a.kind_of?(Integer) #a.kind_of?(Fixnum) or a.kind_of?(Bignum)
1390
1404
  @a = a
1391
1405
  else
1392
1406
  end
1393
1407
  end
1394
1408
  def + (a)
1395
- if a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Bignum) or a.kind_of?(Fixnum)
1409
+ if a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Integer) #a.kind_of?(Bignum) or a.kind_of?(Fixnum)
1396
1410
  Zahlen(self.to_i + a.to_i)
1397
1411
  elsif a.kind_of?(Quotient) or a.kind_of?(Fraction)
1398
1412
  a + Quotient(@a,1)
@@ -1406,7 +1420,7 @@ class Zahlen < Counting
1406
1420
  end
1407
1421
  end
1408
1422
  def - (a)
1409
- if a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Bignum) or a.kind_of?(Fixnum)
1423
+ if a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Integer) #a.kind_of?(Bignum) or a.kind_of?(Fixnum)
1410
1424
  Zahlen(self.to_i - a.to_i)
1411
1425
  elsif a.kind_of?(Quotient) or a.kind_of?(Fraction)
1412
1426
  a - Quotient(@a,1)
@@ -1420,7 +1434,7 @@ class Zahlen < Counting
1420
1434
  end
1421
1435
  end
1422
1436
  def * (a)
1423
- if a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Bignum) or a.kind_of?(Fixnum)
1437
+ if a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Integer) # a.kind_of?(Bignum) or a.kind_of?(Fixnum)
1424
1438
  Zahlen(self.to_i * a.to_i)
1425
1439
  elsif a.kind_of?(Quotient) or a.kind_of?(Fraction)
1426
1440
  a * Quotient(@a,1)
@@ -1434,7 +1448,7 @@ class Zahlen < Counting
1434
1448
  end
1435
1449
  end
1436
1450
  def / (a)
1437
- if (a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Bignum) or a.kind_of?(Fixnum)) and self.to_i%(a.to_i) == 0
1451
+ if (a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Integer)) and self.to_i%(a.to_i) == 0 #a.kind_of?(Bignum) or a.kind_of?(Fixnum)) and self.to_i%(a.to_i) == 0
1438
1452
  Zahlen(self.to_i / a.to_i)
1439
1453
  elsif a.kind_of?(Quotient) or a.kind_of?(Fraction)
1440
1454
  self * Quotient(a.to_Q.denominator,a.to_Q.numerator)
@@ -1490,17 +1504,18 @@ class Zahlen < Counting
1490
1504
  def to_f
1491
1505
  @a.to_f
1492
1506
  end
1493
- def to_s!
1494
- "Zahlen(#{@a})"
1495
- end
1496
1507
  def to_s
1497
- @a.to_s
1508
+ "Zahlen(#{@a})"
1498
1509
  end
1499
1510
  def to_N
1500
1511
  Natural(@a)
1501
1512
  end
1513
+ def to_N0
1514
+ Counting(@a)
1515
+ end
1502
1516
  def to_Z
1503
- Zahlen(@a)
1517
+ self
1518
+ #Zahlen(@a)
1504
1519
  end
1505
1520
  def to_Frac
1506
1521
  Fraction(@a,Quotient(0,1))
@@ -1550,6 +1565,9 @@ class Quotient < Numeric
1550
1565
  b = -1*b if (a<0 and b<0)
1551
1566
  @abs1 = 1
1552
1567
  end
1568
+ if b==0 then
1569
+ # this should have been caught in def Quotient
1570
+ end
1553
1571
  if a.kind_of?(Numeric) and b.kind_of?(Numeric)
1554
1572
  a.kind_of?(Zahlen) ? @a = a : @a = Zahlen(a.to_i)
1555
1573
  b.kind_of?(Natural) ? @b = b : @b = Natural(b.to_i)
@@ -1588,7 +1606,7 @@ class Quotient < Numeric
1588
1606
  self
1589
1607
  elsif a.kind_of?(NANClass) or a.kind_of?(InfinityClass)
1590
1608
  infinity
1591
- elsif (a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Bignum) or a.kind_of?(Fixnum))
1609
+ elsif (a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Integer)) # a.kind_of?(Bignum) or a.kind_of?(Fixnum))
1592
1610
  self + Quotient(a, 1)
1593
1611
  elsif a.kind_of?(Float)
1594
1612
  Float(self) + a
@@ -1611,7 +1629,7 @@ class Quotient < Numeric
1611
1629
  self
1612
1630
  elsif a.kind_of?(NANClass) or a.kind_of?(InfinityClass)
1613
1631
  infinity*(-1)
1614
- elsif (a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Bignum) or a.kind_of?(Fixnum))
1632
+ elsif (a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Integer)) #a.kind_of?(Bignum) or a.kind_of?(Fixnum))
1615
1633
  self - Quotient.new!(a, 1)
1616
1634
  elsif a.kind_of?(Float)
1617
1635
  Float(self) - a
@@ -1633,7 +1651,7 @@ class Quotient < Numeric
1633
1651
  naught
1634
1652
  elsif a.kind_of?(NANClass) or a.kind_of?(InfinityClass)
1635
1653
  infinity
1636
- elsif (a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Bignum) or a.kind_of?(Fixnum))
1654
+ elsif (a.kind_of?(Zahlen) or a.kind_of?(Counting) or a.kind_of?(Natural) or a.kind_of?(Integer)) #a.kind_of?(Bignum) or a.kind_of?(Fixnum))
1637
1655
  if a ==1 then
1638
1656
  self
1639
1657
  else
@@ -1754,7 +1772,7 @@ class Quotient < Numeric
1754
1772
  def coerce(other)
1755
1773
  if Natural === other or Counting === other or Zahlen === other
1756
1774
  [Quotient(other,1),self]
1757
- elsif Fixnum === other
1775
+ elsif Integer === other #Fixnum === other
1758
1776
  [other, self.to_f]
1759
1777
  else
1760
1778
  [Float(other),self.to_f]
@@ -1770,6 +1788,7 @@ class Quotient < Numeric
1770
1788
  @numerator.to_f/@denominator.to_f
1771
1789
  end
1772
1790
  def to_Frac
1791
+ Fraction(Zahlen(@numerator),Natural(@denominator))
1773
1792
  self >= 0 ? Fraction(Zahlen(@numerator),Natural(@denominator),1) : Fraction(Zahlen(@numerator),Natural(@denominator),-1)
1774
1793
  end
1775
1794
  def to_Dec
@@ -1814,10 +1833,10 @@ class Quotient < Numeric
1814
1833
  end
1815
1834
  eval(ret)
1816
1835
  end
1817
- def to_s!
1836
+ def to_s
1818
1837
  "Quotient(#{(@a*@abs1).to_s},#{@b.to_s})"
1819
1838
  end
1820
- def to_s
1839
+ def to_s_KM
1821
1840
  if @b == 1
1822
1841
  (@a*@abs1).to_s
1823
1842
  else
@@ -1831,7 +1850,8 @@ class Quotient < Numeric
1831
1850
  @numerator.hash ^ @denominator.hash ^ @abs.hash
1832
1851
  end
1833
1852
  end
1834
- class Decimal < Numeric
1853
+
1854
+ class Decimal < Numeric
1835
1855
  def Decimal.new!(a,b,c=0,d=0,e=1)
1836
1856
  new(a,b,c,d,e)
1837
1857
  end
@@ -2181,7 +2201,7 @@ class Decimal < Numeric
2181
2201
  t0 = ""
2182
2202
  t0 = "0"*(@decimalExponent - 1) if @decimalExponent>0
2183
2203
  t = "#{e}#{@integraldecimal}#{@@decimalSeparator}#{t0}#{@decimalfraction}#{@repetend.call}"
2184
- eval("#{@@precision}.times{patt_succ(t)}")
2204
+ instance_eval("#{@@precision}.times{patt_succ(t)}")
2185
2205
  return t
2186
2206
  end
2187
2207
  def inspect
@@ -2311,7 +2331,7 @@ class Fraction < Numeric #Mixed fraction
2311
2331
  num = @properfraction.numerator * a.denominator
2312
2332
  num_a = a.numerator * @properfraction.denominator
2313
2333
  Fraction(num + num_a, @properfraction.denominator * a.denominator)
2314
- elsif a.kind_of?(Integer)or a.kind_of?(Fixnum)
2334
+ elsif a.kind_of?(Integer) #or a.kind_of?(Fixnum)
2315
2335
  a == 0 ? self: self + Fraction.new!(a, Quotient(0,1))
2316
2336
  elsif a.kind_of?(Float)
2317
2337
  Float(self) + a
@@ -2348,7 +2368,7 @@ class Fraction < Numeric #Mixed fraction
2348
2368
  num = @properfraction.numerator * a.numerator
2349
2369
  den = @properfraction.denominator * a.denominator
2350
2370
  Fraction(num, den)
2351
- elsif a.kind_of?(Integer) or a.kind_of?(Fixnum)
2371
+ elsif a.kind_of?(Integer) #or a.kind_of?(Fixnum)
2352
2372
  if a == 0 then
2353
2373
  0
2354
2374
  elsif a == 1
@@ -2375,7 +2395,7 @@ class Fraction < Numeric #Mixed fraction
2375
2395
  den = @properfraction.denominator * a.numerator
2376
2396
  Fraction(num, den) unless a.numerator == 0
2377
2397
  nan if a.numerator == 0
2378
- elsif a.kind_of?(Integer) or a.kind_of?(Fixnum)
2398
+ elsif a.kind_of?(Integer) # or a.kind_of?(Fixnum)
2379
2399
  self * Fraction.new!(1,a)
2380
2400
  elsif a.kind_of?(NaughtClass) or a.kind_of?(EmptySetClass)
2381
2401
  nan
@@ -2452,6 +2472,7 @@ class Fraction < Numeric #Mixed fraction
2452
2472
  end
2453
2473
  end
2454
2474
  class Sigma<Numeric
2475
+
2455
2476
  end
2456
2477
  class Kettenbruch<Numeric
2457
2478
  @@delta = 0
@@ -2923,6 +2944,7 @@ class Kettenbruch<Numeric
2923
2944
  end
2924
2945
  class Real< Numeric
2925
2946
  include SGML
2947
+ @@reals={}
2926
2948
  @@threebareqs = "\u2261"
2927
2949
  def to_sgml
2928
2950
  "<mn #{sgml_id}class='Real'>#{@a}</mn>"
@@ -2930,7 +2952,7 @@ class Real< Numeric
2930
2952
  def Real.defines
2931
2953
  @@threebareqs.encode('utf-8')
2932
2954
  end
2933
- def Real.new!(num,a,b)
2955
+ def Real.new!(a,b,label='')
2934
2956
  if a.kind_of?(Real)
2935
2957
  a
2936
2958
  elsif a.kind_of?(Array)
@@ -2948,6 +2970,9 @@ class Real< Numeric
2948
2970
  a
2949
2971
  end
2950
2972
  end
2973
+ def Real.s_add(a,b,label='')
2974
+ @@reals[label] = b
2975
+ end
2951
2976
  def Real::epsilon(e)
2952
2977
  #on epsilon change flag for dirty and recalculate
2953
2978
  end
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: M500
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.5
4
+ version: 0.9.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - mark ingram
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-31 00:00:00.000000000 Z
11
+ date: 2019-02-06 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: M500 contains easy to use classes that model modern mathematical concepts
13
+ description: extended numbers
14
14
  email:
15
15
  - m.ingram@computer.org
16
16
  executables: []
@@ -31,7 +31,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: '0'
34
+ version: 2.4.0
35
35
  required_rubygems_version: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - ">="
@@ -39,8 +39,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
39
39
  version: '0'
40
40
  requirements: []
41
41
  rubyforge_project: M500
42
- rubygems_version: 2.4.8
42
+ rubygems_version: 2.7.8
43
43
  signing_key:
44
44
  specification_version: 4
45
- summary: extended numbers
45
+ summary: support for Ruby 2.4 deprecation of Fixnum and Bignum
46
46
  test_files: []