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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/numbers.rb +16 -0
- data/lib/op.rb +10 -0
- data/lib/ragni-cas.rb +63 -0
- data/lib/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4f98cf94916ce493037fae540da85b571d677a72
|
4
|
+
data.tar.gz: 80e70754e06f40feb3f3ea8ef63bcf77824a77fc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
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.
|
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-
|
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
|