ragni-cas 0.1.6 → 0.1.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a095b6caf92bc41279d088acbed381ee4191cda1
4
- data.tar.gz: b11a8bccb4cbac26b6f74fafe529e39254a83bbd
3
+ metadata.gz: 4f98cf94916ce493037fae540da85b571d677a72
4
+ data.tar.gz: 80e70754e06f40feb3f3ea8ef63bcf77824a77fc
5
5
  SHA512:
6
- metadata.gz: a461de33b8309b1fcc8fa27cb6bccf035cfc01ca2920f026d0bcf8cfb4ba3cea7f6f4605e4bbe037c4b23e6ef4f21afe0cc3f086017e6682270b057f89fc241b
7
- data.tar.gz: a874d3fcb8ce0dad237f1354b745b962491f93f90578b69177a776582dc036d78e667ff3d319ef9dafbba9a857fa8a0d6f5c9c9822a4e930d75db579e8f5b71c
6
+ metadata.gz: 08cc60ffe01d6b41c85e45d9e76dc89dc4ffeb01fafbf005df1ed9c68247944f9b635806c346ca6d3f196cc8964dbb04e06177ce1bd64da0dfef4d356929068b
7
+ data.tar.gz: 4c10e0659a2651b0c6d5919845ee1670a515f4218fb1445d978c4dfe161aa38bea057bb4d7335975afd50eb08e3f71fc2b27ae22104cb502f66d25e5cfecc115
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/numbers.rb CHANGED
@@ -46,11 +46,23 @@ module CAS
46
46
  def inspect
47
47
  "Const(#{@x})"
48
48
  end
49
+
50
+ def dot_graph(node)
51
+ "#{self.class.to_s.gsub("CAS::", "")}_#{self.object_id};"
52
+ end
49
53
  end
50
54
 
51
55
  def self.const(f)
52
56
  CAS::Constant.new f
53
57
  end
58
+ def self.const(*val)
59
+ (return CAS::Constant.new(val[0])) if val.size == 1
60
+ ret = []
61
+ val.each do |n|
62
+ ret << CAS::Variable.new(n)
63
+ end
64
+ return ret
65
+ end
54
66
 
55
67
  # __ __ _ _ _
56
68
  # \ \ / /_ _ _ _(_)__ _| |__| |___
@@ -109,6 +121,10 @@ module CAS
109
121
  def simplify
110
122
  self
111
123
  end
124
+
125
+ def dot_graph(node)
126
+ "#{@name};"
127
+ end
112
128
  end # Number
113
129
 
114
130
  def self.vars(*name)
data/lib/op.rb CHANGED
@@ -109,6 +109,11 @@ module CAS
109
109
  def args
110
110
  @x.args.uniq
111
111
  end
112
+
113
+ def dot_graph(node)
114
+ cls = "#{self.class.to_s.gsub("CAS::", "")}_#{self.object_id}"
115
+ "#{cls} -> #{@x.dot_graph node}\n"
116
+ end
112
117
  end # Op
113
118
 
114
119
  # ___ _ ___
@@ -198,5 +203,10 @@ module CAS
198
203
  @y = @y.simplify
199
204
  end
200
205
  end
206
+
207
+ def dot_graph(node)
208
+ cls = "#{self.class.to_s.gsub("CAS::", "")}_#{self.object_id}"
209
+ "#{cls} -> #{@x.dot_graph node}\n #{cls} -> #{@y.dot_graph node}"
210
+ end
201
211
  end # BinaryOp
202
212
  end
data/lib/ragni-cas.rb CHANGED
@@ -5,3 +5,66 @@ require_relative 'numbers.rb'
5
5
  require_relative 'fnc-base.rb'
6
6
  require_relative 'fnc-trig.rb'
7
7
  require_relative 'fnc-trsc.rb'
8
+
9
+ module CAS
10
+ def self.to_dot(op)
11
+ node = {}
12
+ string = op.dot_graph(node)
13
+ labels = ""
14
+ lab = {}
15
+
16
+ string.scan(/\w+\_\d+/) do |m|
17
+ if m =~ /(\w+)\_\d+/
18
+ case $1
19
+ when "Sum"
20
+ l = "+"
21
+ when "Diff"
22
+ l = "-"
23
+ when "Prod"
24
+ l = "×"
25
+ when "Div"
26
+ l = "÷"
27
+ when "Sqrt"
28
+ l = "√(∙)"
29
+ when "Abs"
30
+ l = "|∙|"
31
+ when "Invert"
32
+ l = "-(∙)"
33
+ when "Exp"
34
+ l = "exp(∙)"
35
+ when "Log"
36
+ l = "log(∙)"
37
+ when "Pow"
38
+ l = "(∙)^(∙)"
39
+ when "ZERO_CONSTANT"
40
+ l = "0"
41
+ when "ONE_CONSTANT"
42
+ l = "1"
43
+ when "TWO_CONSTANT"
44
+ l = "2"
45
+ when "PI_CONSTANT"
46
+ l= "π"
47
+ when "INFINITY_CONSTANT"
48
+ l = "∞"
49
+ when "E_CONSTANT"
50
+ l = "e"
51
+ when "MINUS_ONE_CONSTANT"
52
+ l = "-1"
53
+ else
54
+ l = $1
55
+ end
56
+ lab[m] = l
57
+ end
58
+ end
59
+ lab.each { |k, v| labels += " #{k} [label=\"#{v}\"]\n" }
60
+
61
+ return <<-EOG
62
+ digraph Op {
63
+ #{string}#{labels}}
64
+ EOG
65
+ end
66
+
67
+ def self.export_dot(fl, op)
68
+ File.open(fl, "w") do |f| f.puts CAS.to_dot(op) end
69
+ end
70
+ end
data/lib/version.rb CHANGED
@@ -2,6 +2,6 @@
2
2
  #!/usr/bin/env ruby
3
3
 
4
4
  module CAS
5
- VERSION = [0, 1, 6]
5
+ VERSION = [0, 1, 7]
6
6
  end
7
7
 
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ragni-cas
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matteo Ragni
@@ -29,7 +29,7 @@ cert_chain:
29
29
  XorZtzkkLImvKFj35xKLFfVkv0Vd8tGQoiL8vdmQNJjAjtE+C+Y7OI4dpiZPKO4G
30
30
  R/8JOvUuk9jPbyLxjQH/sFaFqqYGX2xo1zk2CRy/A0WhJrSaXVw1r5lEi7b0W5gg
31
31
  -----END CERTIFICATE-----
32
- date: 2016-07-21 00:00:00.000000000 Z
32
+ date: 2016-07-22 00:00:00.000000000 Z
33
33
  dependencies: []
34
34
  description:
35
35
  email: info@ragni.me
metadata.gz.sig CHANGED
Binary file