danica 2.0.4 → 2.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +6 -6
- data/lib/danica/common.rb +0 -20
- data/lib/danica/cos.rb +2 -4
- data/lib/danica/division.rb +2 -4
- data/lib/danica/exponential.rb +2 -4
- data/lib/danica/group.rb +4 -2
- data/lib/danica/operator/chained.rb +8 -21
- data/lib/danica/power.rb +2 -4
- data/lib/danica/sin.rb +2 -4
- data/lib/danica/squared_root.rb +2 -4
- data/lib/danica/sum.rb +2 -4
- data/lib/danica/version.rb +1 -1
- data/spec/lib/danica/cos_spec.rb +2 -1
- data/spec/lib/danica/division_spec.rb +2 -2
- data/spec/lib/danica/exponential_spec.rb +2 -1
- data/spec/lib/danica/function_spec.rb +2 -2
- data/spec/lib/danica/power_spec.rb +2 -2
- data/spec/lib/danica/product_spec.rb +4 -4
- data/spec/lib/danica/sin_spec.rb +2 -1
- data/spec/lib/danica/squared_root_spec.rb +2 -1
- data/spec/lib/danica/sum_spec.rb +5 -5
- data/spec/support/shared_examples/operator/chained.rb +3 -3
- data/spec/support/shared_examples/operator/dual_term.rb +1 -1
- data/spec/support/shared_examples/operator/single_input.rb +3 -3
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d9452b255fbf76168b5420387cfc63e578f61e2d
|
4
|
+
data.tar.gz: 52e4a1dc89abe24a06b337d6fee11a09670455d4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8e703c6ebbecb67468d686145e91546209a1330c68e2f02992313b7255ea6439970fdd817addaa00e0f88e9bf6cece0fdb00ce0c1ea7c9e99d383ac3b48c4fef
|
7
|
+
data.tar.gz: 3e495695b72e62546b941d7a6838657574dbd54bc94044177dd90c39a77dbad1170cac77ccea7be96eaa9843145f68789f3e0b2c7e543db50dc86320ea873f05
|
data/README.md
CHANGED
@@ -41,12 +41,12 @@ class MyOperator < Danica::Operator
|
|
41
41
|
|
42
42
|
private
|
43
43
|
|
44
|
-
def
|
45
|
-
#implement
|
44
|
+
def to_tex
|
45
|
+
#implement to_tex here
|
46
46
|
end
|
47
47
|
|
48
|
-
def
|
49
|
-
#implement
|
48
|
+
def to_gnu
|
49
|
+
#implement to_gnu here
|
50
50
|
end
|
51
51
|
end
|
52
52
|
```
|
@@ -61,11 +61,11 @@ class Danica::Inverse
|
|
61
61
|
|
62
62
|
private
|
63
63
|
|
64
|
-
def
|
64
|
+
def to_tex
|
65
65
|
"(#{value.to_tex})^{-1}"
|
66
66
|
end
|
67
67
|
|
68
|
-
def
|
68
|
+
def to_gnu
|
69
69
|
"(#{value.to_gnu}) ** -1"
|
70
70
|
end
|
71
71
|
end
|
data/lib/danica/common.rb
CHANGED
@@ -10,18 +10,6 @@ module Danica
|
|
10
10
|
raise 'Not IMplemented yet'
|
11
11
|
end
|
12
12
|
|
13
|
-
def to_tex
|
14
|
-
Number.new(to_f).to_tex
|
15
|
-
rescue Exception::NotDefined
|
16
|
-
tex_string
|
17
|
-
end
|
18
|
-
|
19
|
-
def to_gnu
|
20
|
-
Number.new(to_f).to_gnu
|
21
|
-
rescue Exception::NotDefined
|
22
|
-
gnu_string
|
23
|
-
end
|
24
|
-
|
25
13
|
def variables=(variables)
|
26
14
|
@variables = variables.map { |v| wrap_value(v) }
|
27
15
|
end
|
@@ -49,14 +37,6 @@ module Danica
|
|
49
37
|
def non_valued_variables
|
50
38
|
variables.reject(&:valued?)
|
51
39
|
end
|
52
|
-
|
53
|
-
def tex_string
|
54
|
-
raise 'Not IMplemented yet'
|
55
|
-
end
|
56
|
-
|
57
|
-
def gnu_string
|
58
|
-
raise 'Not IMplemented yet'
|
59
|
-
end
|
60
40
|
|
61
41
|
def wrap_value(value)
|
62
42
|
return Number.new(value) if value.is_a?(Numeric)
|
data/lib/danica/cos.rb
CHANGED
data/lib/danica/division.rb
CHANGED
@@ -6,13 +6,11 @@ module Danica
|
|
6
6
|
numerator.to_f / denominator.to_f
|
7
7
|
end
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
def tex_string
|
9
|
+
def to_tex
|
12
10
|
"\\frac{#{numerator.to_tex}}{#{denominator.to_tex}}"
|
13
11
|
end
|
14
12
|
|
15
|
-
def
|
13
|
+
def to_gnu
|
16
14
|
"#{numerator.to_gnu}/#{denominator.to_gnu}"
|
17
15
|
end
|
18
16
|
end
|
data/lib/danica/exponential.rb
CHANGED
data/lib/danica/group.rb
CHANGED
@@ -10,27 +10,19 @@ module Danica
|
|
10
10
|
variables.include?(value)
|
11
11
|
end
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
def repack(other)
|
16
|
-
other_variables = other.is_a?(self.class) ? other.variables : [ other ]
|
17
|
-
self.class.new(variables + other_variables)
|
18
|
-
end
|
19
|
-
|
20
|
-
def tex_string
|
21
|
-
(numeric_to_tex + non_numeric_variables.map(&:to_tex)).join(" #{tex_symbol} ")
|
13
|
+
def to_tex
|
14
|
+
variables.map(&:to_tex).join(" #{tex_symbol} ")
|
22
15
|
end
|
23
16
|
|
24
|
-
def
|
25
|
-
|
17
|
+
def to_gnu
|
18
|
+
variables.map(&:to_gnu).join(" #{gnu_symbol} ")
|
26
19
|
end
|
27
20
|
|
28
|
-
|
29
|
-
variables.select { |v| v.valued? }
|
30
|
-
end
|
21
|
+
private
|
31
22
|
|
32
|
-
def
|
33
|
-
|
23
|
+
def repack(other)
|
24
|
+
other_variables = other.is_a?(self.class) ? other.variables : [ other ]
|
25
|
+
self.class.new(variables + other_variables)
|
34
26
|
end
|
35
27
|
|
36
28
|
def chain(numbers)
|
@@ -38,11 +30,6 @@ module Danica
|
|
38
30
|
chain_operation(a,b)
|
39
31
|
end.to_f
|
40
32
|
end
|
41
|
-
|
42
|
-
def numeric_to_tex
|
43
|
-
return [] if numeric_variables.empty?
|
44
|
-
[ Number.new(chain(numeric_variables.map(&:to_f))).to_tex ]
|
45
|
-
end
|
46
33
|
end
|
47
34
|
end
|
48
35
|
end
|
data/lib/danica/power.rb
CHANGED
data/lib/danica/sin.rb
CHANGED
data/lib/danica/squared_root.rb
CHANGED
data/lib/danica/sum.rb
CHANGED
data/lib/danica/version.rb
CHANGED
data/spec/lib/danica/cos_spec.rb
CHANGED
@@ -9,7 +9,8 @@ describe Danica::Cos do
|
|
9
9
|
it_behaves_like 'a operator with a single input value', {
|
10
10
|
variable_value: Math::PI,
|
11
11
|
expected_number: -1.0,
|
12
|
-
|
12
|
+
expected_number_tex: 'cos(3.141592653589793)',
|
13
|
+
expected_number_gnu: 'cos(3.141592653589793)',
|
13
14
|
expected_tex: 'cos(X)',
|
14
15
|
expected_gnu: 'cos(X)'
|
15
16
|
}
|
@@ -12,12 +12,12 @@ describe Danica::Division do
|
|
12
12
|
calculated: 1.0 / 2.0,
|
13
13
|
to_tex: {
|
14
14
|
string_expected: '\frac{X1}{X2}',
|
15
|
-
numeric_string_expected: '
|
15
|
+
numeric_string_expected: '\frac{2}{4}',
|
16
16
|
partial_string_expected: '\frac{2}{X2}'
|
17
17
|
},
|
18
18
|
to_gnu: {
|
19
19
|
string_expected: 'X1/X2',
|
20
|
-
numeric_string_expected: '
|
20
|
+
numeric_string_expected: '2/4',
|
21
21
|
partial_string_expected: '2/X2'
|
22
22
|
}
|
23
23
|
}
|
@@ -9,7 +9,8 @@ describe Danica::Exponential do
|
|
9
9
|
it_behaves_like 'a operator with a single input value', {
|
10
10
|
variable_value: 2,
|
11
11
|
expected_number: Math.exp(2),
|
12
|
-
|
12
|
+
expected_number_tex: 'e^{2}',
|
13
|
+
expected_number_gnu: 'exp(2)',
|
13
14
|
expected_tex: 'e^{X}',
|
14
15
|
expected_gnu: 'exp(X)'
|
15
16
|
}
|
@@ -231,7 +231,7 @@ describe Danica::Function do
|
|
231
231
|
|
232
232
|
describe '#to_tex' do
|
233
233
|
context 'when creating the spatial operator for constantly accelerated movement' do
|
234
|
-
let(:expected) { '\frac{1}{\sqrt{
|
234
|
+
let(:expected) { '\frac{1}{\sqrt{2 \cdot \pi \cdot v^{2}}} \cdot e^{-\frac{\left(x + -u\right)^{2}}{2 \cdot v^{2}}}' }
|
235
235
|
|
236
236
|
it 'return the latex format CAM' do
|
237
237
|
expect(subject.to_tex).to eq(expected)
|
@@ -241,7 +241,7 @@ describe Danica::Function do
|
|
241
241
|
|
242
242
|
describe '#to_gnu' do
|
243
243
|
context 'when creating the spatial operator for constantly accelerated movement' do
|
244
|
-
let(:expected) { '1/sqrt(
|
244
|
+
let(:expected) { '1/sqrt(2 * pi * v**2) * exp(-(x + -u)**2/2 * v**2)' }
|
245
245
|
|
246
246
|
it 'return the latex format CAM' do
|
247
247
|
expect(subject.to_gnu).to eq(expected)
|
@@ -12,12 +12,12 @@ describe Danica::Power do
|
|
12
12
|
calculated: 9.0,
|
13
13
|
to_tex: {
|
14
14
|
string_expected: 'X1^{X2}',
|
15
|
-
numeric_string_expected: '
|
15
|
+
numeric_string_expected: '3^{2}',
|
16
16
|
partial_string_expected: '3^{X2}'
|
17
17
|
},
|
18
18
|
to_gnu: {
|
19
19
|
string_expected: 'X1**X2',
|
20
|
-
numeric_string_expected: '
|
20
|
+
numeric_string_expected: '3**2',
|
21
21
|
partial_string_expected: '3**X2'
|
22
22
|
}
|
23
23
|
}
|
@@ -22,13 +22,13 @@ describe Danica::Product do
|
|
22
22
|
numeric_variables: [ 1.5, 2, 3.5 ],
|
23
23
|
to_tex: {
|
24
24
|
string_expected: %w(X1 X2 X3 X4).join(' \cdot '),
|
25
|
-
integer_expected: %w(
|
26
|
-
float_expected:
|
25
|
+
integer_expected: %w(1.5 2 X3 X4).join(' \cdot '),
|
26
|
+
float_expected: %w(1.5 2 3.5 X4).join(' \cdot ')
|
27
27
|
},
|
28
28
|
to_gnu: {
|
29
29
|
string_expected: %w(X1 X2 X3 X4).join(' * '),
|
30
|
-
integer_expected: %w(
|
31
|
-
float_expected:
|
30
|
+
integer_expected: %w(1.5 2 X3 X4).join(' * '),
|
31
|
+
float_expected: %w(1.5 2 3.5 X4).join(' * '),
|
32
32
|
}
|
33
33
|
}
|
34
34
|
end
|
data/spec/lib/danica/sin_spec.rb
CHANGED
@@ -9,7 +9,8 @@ describe Danica::Sin do
|
|
9
9
|
it_behaves_like 'a operator with a single input value', {
|
10
10
|
variable_value: Math::PI / 2.0,
|
11
11
|
expected_number: 1.0,
|
12
|
-
|
12
|
+
expected_number_tex: 'sin(1.5707963267948966)',
|
13
|
+
expected_number_gnu: 'sin(1.5707963267948966)',
|
13
14
|
expected_tex: 'sin(X)',
|
14
15
|
expected_gnu: 'sin(X)'
|
15
16
|
}
|
@@ -9,7 +9,8 @@ describe Danica::SquaredRoot do
|
|
9
9
|
it_behaves_like 'a operator with a single input value', {
|
10
10
|
variable_value: 9,
|
11
11
|
expected_number: 3.0,
|
12
|
-
|
12
|
+
expected_number_tex: '\sqrt{9}',
|
13
|
+
expected_number_gnu: 'sqrt(9)',
|
13
14
|
expected_tex: '\sqrt{X}',
|
14
15
|
expected_gnu: 'sqrt(X)'
|
15
16
|
}
|
data/spec/lib/danica/sum_spec.rb
CHANGED
@@ -23,16 +23,16 @@ describe Danica::Sum do
|
|
23
23
|
|
24
24
|
it_behaves_like 'a operator that joins many variables with same operation', {
|
25
25
|
calculated: 10,
|
26
|
-
numeric_variables: [ 1.5,
|
26
|
+
numeric_variables: [ 1.5, 3.0, 3.5 ],
|
27
27
|
to_tex: {
|
28
28
|
string_expected: 'X1 + X2 + X3 + X4',
|
29
|
-
integer_expected: '
|
30
|
-
float_expected: '
|
29
|
+
integer_expected: '1.5 + 3 + X3 + X4',
|
30
|
+
float_expected: '1.5 + 3 + 3.5 + X4'
|
31
31
|
},
|
32
32
|
to_gnu: {
|
33
33
|
string_expected: 'X1 + X2 + X3 + X4',
|
34
|
-
integer_expected: '
|
35
|
-
float_expected: '
|
34
|
+
integer_expected: '1.5 + 3 + X3 + X4',
|
35
|
+
float_expected: '1.5 + 3 + 3.5 + X4'
|
36
36
|
}
|
37
37
|
}
|
38
38
|
end
|
@@ -90,14 +90,14 @@ shared_examples 'a operator that knows how to write to a string' do |command, ar
|
|
90
90
|
end
|
91
91
|
end
|
92
92
|
|
93
|
-
it 'outputs a text format
|
93
|
+
it 'outputs a text format of numbers' do
|
94
94
|
expect(subject.public_send(command)).to eq(integer_expected)
|
95
95
|
end
|
96
96
|
|
97
|
-
context 'when numeric variables
|
97
|
+
context 'when numeric variables are a float value' do
|
98
98
|
let(:numeric_variables_index) { 2 }
|
99
99
|
|
100
|
-
it 'outputs a text format
|
100
|
+
it 'outputs a text format of numbers' do
|
101
101
|
expect(subject.public_send(command)).to eq(float_expected)
|
102
102
|
end
|
103
103
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
shared_examples 'a operator with a single input value' do |arguments|
|
2
|
-
include_context 'variables are initialized', arguments, *%w(variable_value expected_number expected_tex
|
2
|
+
include_context 'variables are initialized', arguments, *%w(variable_value expected_number expected_tex expected_number_tex expected_gnu expected_number_gnu)
|
3
3
|
let(:variable) { { name: "X", value: variable_value } }
|
4
4
|
subject { described_class.new(variable) }
|
5
5
|
|
@@ -41,7 +41,7 @@ shared_examples 'a operator with a single input value' do |arguments|
|
|
41
41
|
subject.variables[0].value = variable_value
|
42
42
|
end
|
43
43
|
it 'prints both numbers' do
|
44
|
-
expect(subject.to_tex).to eq(
|
44
|
+
expect(subject.to_tex).to eq(expected_number_tex)
|
45
45
|
end
|
46
46
|
end
|
47
47
|
end
|
@@ -60,7 +60,7 @@ shared_examples 'a operator with a single input value' do |arguments|
|
|
60
60
|
subject.variables[0].value = variable_value
|
61
61
|
end
|
62
62
|
it 'prints both numbers' do
|
63
|
-
expect(subject.to_gnu).to eq(
|
63
|
+
expect(subject.to_gnu).to eq(expected_number_gnu)
|
64
64
|
end
|
65
65
|
end
|
66
66
|
end
|