physics_calculator 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/physics_calculator.rb +70 -32
- data/lib/physics_calculator/version.rb +1 -1
- data/spec/physics_calculator_spec.rb +352 -0
- metadata +5 -3
data/lib/physics_calculator.rb
CHANGED
@@ -3,58 +3,96 @@ require "physics_calculator/version"
|
|
3
3
|
module PhysicsCalculator
|
4
4
|
|
5
5
|
include Math
|
6
|
-
|
6
|
+
# methods for matrix and vector manipulation
|
7
|
+
require 'matrix'
|
7
8
|
|
8
9
|
# extend standard library vector class
|
9
10
|
|
10
11
|
class ::Vector
|
11
12
|
|
12
|
-
# dot_product as alias for
|
13
|
-
def dot_product(
|
14
|
-
self.inner_product(
|
13
|
+
# dot_product as alias for inner product
|
14
|
+
def dot_product(v_)
|
15
|
+
self.inner_product(v_)
|
15
16
|
end
|
16
17
|
|
17
18
|
# define cross product
|
18
|
-
def cross_product_(
|
19
|
-
raise ArgumentError, 'Vectors must be 3D' if (self.size != 3 ||
|
20
|
-
Vector.[](self[1]*
|
19
|
+
def cross_product_(v_)
|
20
|
+
raise ArgumentError, 'Vectors must be 3D' if (self.size != 3 || v_.size != 3)
|
21
|
+
Vector.[](self[1]*v_[2] - self[2]*v_[1], self[2]*v_[0] - self[0]*v_[2], self[0]*v_[1] - self[1]*v_[0])
|
21
22
|
end
|
22
23
|
|
23
24
|
# define distance between two vectors
|
24
|
-
def distance(
|
25
|
-
(self -
|
25
|
+
def distance(v_)
|
26
|
+
(self - v_).r
|
26
27
|
end
|
27
28
|
|
28
29
|
# define unit vector pointing from v to self
|
29
|
-
def unit_(
|
30
|
-
(self -
|
30
|
+
def unit_(v_)
|
31
|
+
(self - v_).normalize
|
31
32
|
end
|
32
33
|
|
33
34
|
end
|
34
35
|
|
35
36
|
# Physical Constants (SI Units)
|
36
37
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
38
|
+
|
39
|
+
# speed of light in a vacuum (m/s)
|
40
|
+
SPEED_LIGHT = 299792458.0
|
41
|
+
|
42
|
+
# planck's constant (J*s)
|
43
|
+
PLANCK = 6.62606957e-34
|
44
|
+
|
45
|
+
# reduced planck's constant
|
46
|
+
PLANCK_REDUCED = 1.054571726e-34
|
47
|
+
|
48
|
+
# vacuum permittivity (F/m)
|
49
|
+
PERMITTIVITY = 8.854187817e-12
|
50
|
+
|
51
|
+
# vacuum permeability ((V*s)/(A*m))
|
52
|
+
PERMEABILITY = 1.2566370614e-6
|
53
|
+
|
54
|
+
# elementary charge (C)
|
55
|
+
CHARGE_ELEMENTARY = 1.602176565e-19
|
56
|
+
|
57
|
+
# fine structure constant (dimensionless)
|
58
|
+
FINE_STRUCTURE = 7.2973525698e-3
|
59
|
+
|
60
|
+
# electron rest mass (kg)
|
61
|
+
MASS_ELECTRON = 9.10938215e-31
|
62
|
+
|
63
|
+
# proton rest mass (kg)
|
64
|
+
MASS_PROTON = 1.672621777e-27
|
65
|
+
|
66
|
+
# neutron rest mass (kg)
|
67
|
+
MASS_NEUTRON = 1.674927351e-27
|
68
|
+
|
69
|
+
# mass of the Earth (kg)
|
70
|
+
MASS_EARTH = 5.97217e24
|
71
|
+
|
72
|
+
# mass of the Sun (kg)
|
73
|
+
MASS_SUN = 1.98855e30
|
74
|
+
|
75
|
+
# mass of the Moon (kg)
|
76
|
+
MASS_MOON = 7.3477e22
|
77
|
+
|
78
|
+
# gravitational constant ((N*m^2)/kg^2))
|
79
|
+
GRAVITATIONAL = 6.67384e-11
|
80
|
+
|
81
|
+
# acceleration due to gravity on Earth's surface (m/s^2)
|
82
|
+
ACCELERATION_GRAVITY = 9.80665
|
83
|
+
|
84
|
+
# Boltzmann constant
|
85
|
+
BOLTZMANN = 1.3806488e-23
|
86
|
+
|
87
|
+
# energy of ground state of electron in hydrogen atom (Joules)
|
88
|
+
ENERGY_BINDING = -2.1799e-19
|
89
|
+
|
90
|
+
# Rydberg constant (1/m)
|
91
|
+
RYDBERG = 1.09739e7
|
55
92
|
|
56
93
|
# Aliases for convenience
|
57
94
|
|
95
|
+
|
58
96
|
C = SPEED_LIGHT
|
59
97
|
G = GRAVITATIONAL
|
60
98
|
H = PLANCK_REDUCED
|
@@ -117,7 +155,7 @@ module PhysicsCalculator
|
|
117
155
|
(position_ - axis_).cross_product_(force_)
|
118
156
|
end
|
119
157
|
|
120
|
-
# angular momentum from momentum mass*velocity_ around
|
158
|
+
# angular momentum from momentum mass*velocity_ around axis_ (vector in J * s)
|
121
159
|
def angular_momentum_(axis_, position_, mass, velocity_)
|
122
160
|
(position_ - axis_).cross_product_(momentum_(mass,velocity_))
|
123
161
|
end
|
@@ -137,7 +175,7 @@ module PhysicsCalculator
|
|
137
175
|
moment_inertia_cm + mass*axis_distance**2
|
138
176
|
end
|
139
177
|
|
140
|
-
# moment of inertia of mass at distance away from axis of rotation(scalar in kg * m^2)
|
178
|
+
# moment of inertia of mass at distance away from axis of rotation (scalar in kg * m^2)
|
141
179
|
def moment_inertia_point_mass(mass, distance)
|
142
180
|
mass * distance**2
|
143
181
|
end
|
@@ -166,7 +204,7 @@ module PhysicsCalculator
|
|
166
204
|
# quantum mechanics
|
167
205
|
|
168
206
|
|
169
|
-
# de Broglie wavelength for a particle with momentum
|
207
|
+
# de Broglie wavelength for a particle with momentum (scalar in meters)
|
170
208
|
def wavelength_de_broglie(momentum)
|
171
209
|
PLANCK / momentum
|
172
210
|
end
|
@@ -0,0 +1,352 @@
|
|
1
|
+
require 'rspec'
|
2
|
+
require 'physics_calculator'
|
3
|
+
include PhysicsCalculator
|
4
|
+
|
5
|
+
RSpec::Matchers.define :be_close_vector_to do |expected|
|
6
|
+
match do |actual|
|
7
|
+
n = 0
|
8
|
+
(0..2).each do |x|
|
9
|
+
a_value = actual[x]
|
10
|
+
e_value = expected[x]
|
11
|
+
if e_value == 0
|
12
|
+
tolerance = 0.0001
|
13
|
+
else
|
14
|
+
tolerance = e_value.abs / 10000.0
|
15
|
+
end
|
16
|
+
if (a_value > e_value - tolerance) and (a_value < e_value + tolerance)
|
17
|
+
n += 1
|
18
|
+
end
|
19
|
+
end
|
20
|
+
n == 3
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
RSpec::Matchers.define :be_close_scalar_to do |expected|
|
25
|
+
match do |actual|
|
26
|
+
if expected == 0
|
27
|
+
tolerance = 0.0001
|
28
|
+
else
|
29
|
+
tolerance = expected.abs / 10000.0
|
30
|
+
end
|
31
|
+
(actual > expected - tolerance) and (actual < expected + tolerance)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe PhysicsCalculator do
|
36
|
+
|
37
|
+
|
38
|
+
vec1_ = Vector.[](1, 2, 3)
|
39
|
+
vec2_ = Vector.[](4, 5, 6)
|
40
|
+
vec3_ = Vector.[](1, 0, -1)
|
41
|
+
|
42
|
+
# added vector methods
|
43
|
+
|
44
|
+
describe Vector do
|
45
|
+
|
46
|
+
describe '#dot_product' do
|
47
|
+
it 'returns dot product of two vectors' do
|
48
|
+
expect(vec1_.dot_product(vec2_)).to eq 32
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe '#cross_product_' do
|
53
|
+
it 'returns cross product of two vectors' do
|
54
|
+
expect(vec1_.cross_product_(vec2_)).to be_close_vector_to [-3,6,-3]
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'raises error if vectors are not 3D' do
|
58
|
+
expect {Vector.[](4,2).cross_product_(Vector.[](3,0))}.to raise_error ArgumentError
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe '#distance' do
|
63
|
+
it 'returns magnitude of difference of two vectors' do
|
64
|
+
expect(vec2_.distance(vec1_)).to be_close_scalar_to 5.19615
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe '#unit_' do
|
69
|
+
it 'returns correct unit vector pointing from first vector to second' do
|
70
|
+
expect(vec2_.unit_(vec1_)).to be_close_vector_to [0.57735, 0.57735, 0.57735]
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
|
76
|
+
# classical mechanics
|
77
|
+
|
78
|
+
describe '#force_gravity_' do
|
79
|
+
it 'returns correct force of gravity' do
|
80
|
+
expect(force_gravity_(10, vec1_, 20, vec2_)).to be_close_vector_to [2.85418e-10, 2.85418e-10, 2.85418e-10]
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
describe '#force_weight_' do
|
85
|
+
it 'returns the correct weight force' do
|
86
|
+
expect(force_weight_(10)).to be_close_vector_to [0, 0, -98.0665]
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
describe '#position_constant_acceleration_' do
|
91
|
+
it 'returns correct position under constant acceleration' do
|
92
|
+
expect(position_constant_acceleration_(vec1_, vec2_, vec3_, 10)).to be_close_vector_to [91, 52, 13]
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
describe '#velocity_constant_acceleration_' do
|
97
|
+
it 'returns correct velocity under constant acceleration' do
|
98
|
+
expect(velocity_constant_acceleration_(vec1_, vec2_, 10)).to be_close_vector_to [41, 52, 63]
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
describe '#position_gravity_acceleration_' do
|
103
|
+
it 'returns correct position under acceleration due to gravity' do
|
104
|
+
expect(position_gravity_acceleration_(vec1_, vec2_, 10)).to be_close_vector_to [41, 52, -427.3275]
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
describe '#velocity_gravity_acceleration_' do
|
109
|
+
it 'returns correct velocity under acceleration due to gravity' do
|
110
|
+
expect(velocity_gravity_acceleration_(vec1_, 10)).to be_close_vector_to [1, 2, -95.0665]
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
describe '#momentum_' do
|
115
|
+
it 'returns correct linear momentum' do
|
116
|
+
expect(momentum_(10, vec1_)).to be_close_vector_to [10, 20, 30]
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
describe '#energy_kinetic' do
|
121
|
+
it 'returns correct kinetic energy' do
|
122
|
+
expect(energy_kinetic(10, vec1_)).to be_close_scalar_to 70
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
describe '#torque_' do
|
127
|
+
it 'returns correct torque' do
|
128
|
+
expect(torque_(vec1_, vec2_, vec3_)).to be_close_vector_to [-3, 6, -3]
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
describe '#angular_momentum_' do
|
133
|
+
it 'returns correct angular momentum' do
|
134
|
+
expect(angular_momentum_(vec1_, vec2_, 10, vec3_)).to be_close_vector_to [-30, 60, -30]
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
describe '#angular_momentum_rigid_' do
|
139
|
+
it 'returns correct angular momentum' do
|
140
|
+
expect(angular_momentum_rigid_(10, vec1_)).to be_close_vector_to [10, 20, 30]
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
describe '#mass_reduced' do
|
145
|
+
it 'returns correct reduced mass' do
|
146
|
+
expect(mass_reduced(3, 4)).to be_close_scalar_to 1.714286
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
describe '#moment_inertia_parallel_axis' do
|
151
|
+
it 'returns correct moment of inertia' do
|
152
|
+
expect(moment_inertia_parallel_axis(20,10,5)).to be_close_scalar_to 270
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
describe '#moment_inertia_point_mass' do
|
157
|
+
it 'returns correct moment of inertia' do
|
158
|
+
expect(moment_inertia_point_mass(2,10)).to be_close_scalar_to 200
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
describe '#moment_inertia_2_point_mass' do
|
163
|
+
it 'returns correct moment of inertia' do
|
164
|
+
expect(moment_inertia_2_point_mass(4,6,3)).to be_close_scalar_to 21.6
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
describe '#moment_inertia_rod' do
|
169
|
+
it 'returns correct moment of inertia' do
|
170
|
+
expect(moment_inertia_rod(6, 10)).to be_close_scalar_to 50
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
describe '#moment_inertia_sphere' do
|
175
|
+
it 'returns correct moment of inertia' do
|
176
|
+
expect(moment_inertia_sphere(3,5)).to be_close_scalar_to 50
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
describe '#moment_inertia_ball' do
|
181
|
+
it 'returns correct moment of inertia' do
|
182
|
+
expect(moment_inertia_ball(3,5)).to be_close_scalar_to 30
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
# quantum mechanics
|
187
|
+
|
188
|
+
describe '#wavelength_de_broglie' do
|
189
|
+
it 'returns correct de Broglie wavelength' do
|
190
|
+
expect(wavelength_de_broglie(10)).to be_close_scalar_to 6.62607e-35
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
describe '#hermite_polynomial' do
|
195
|
+
it 'returns correct hermite polynomial value' do
|
196
|
+
expect(hermite_polynomial(3, 5)).to be_close_scalar_to 940
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
describe '#eigenstate_qho' do
|
201
|
+
it 'returns correct value of qho eigenstate' do
|
202
|
+
expect(eigenstate_qho(0, 5, 10, 0)).to be_close_scalar_to 6.23284e8
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
describe '#energy_qho' do
|
207
|
+
it 'returns correct qho energy' do
|
208
|
+
expect(energy_qho(4, 10)).to be_close_scalar_to 4.746e-33
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
describe '#eigenstate_infinite_well' do
|
213
|
+
it 'returns correct infinite well eigenstate' do
|
214
|
+
expect(eigenstate_infinite_well(4,2,10.1)).to be_close_scalar_to 0.587785
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
|
219
|
+
describe '#energy_infinite_well' do
|
220
|
+
it 'returns correct infinite well energy' do
|
221
|
+
expect(energy_infinite_well(3, 10, 5)).to be_close_scalar_to 9.878585e-70
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
225
|
+
describe '#energy_bohr' do
|
226
|
+
it 'returns correct Bohr energy' do
|
227
|
+
expect(energy_bohr(6)).to be_close_scalar_to -6.055278e-21
|
228
|
+
end
|
229
|
+
end
|
230
|
+
|
231
|
+
describe '#wavelength_rydberg' do
|
232
|
+
it 'returns correct wavelength using Rydberg formula' do
|
233
|
+
expect(wavelength_rydberg(2,5)).to be_close_scalar_to 4.339e-7
|
234
|
+
end
|
235
|
+
end
|
236
|
+
|
237
|
+
# electricity and magnetism
|
238
|
+
|
239
|
+
describe '#force_lorentz_' do
|
240
|
+
it 'returns correct Lorentz force' do
|
241
|
+
expect(force_lorentz_(10, vec1_, vec2_, vec3_)).to be_close_vector_to [20,90,40]
|
242
|
+
end
|
243
|
+
end
|
244
|
+
|
245
|
+
describe '#force_coulombs_law_' do
|
246
|
+
it 'returns correct force using Coulomb law' do
|
247
|
+
expect(force_coulombs_law_(5,vec1_,-10,vec2_)).to be_close_vector_to [9.6092e9, 9.6092e9, 9.6092e9]
|
248
|
+
end
|
249
|
+
end
|
250
|
+
|
251
|
+
describe '#electric_field_point_charge_' do
|
252
|
+
it 'returns correct electric field due to point charge' do
|
253
|
+
expect(electric_field_point_charge_(10,vec1_, vec2_)).to be_close_vector_to [1.92184e9, 1.92184e9, 1.92184e9]
|
254
|
+
end
|
255
|
+
end
|
256
|
+
|
257
|
+
describe '#magnetic_field_point_charge_' do
|
258
|
+
it 'returns correct magnetic field due to point charge' do
|
259
|
+
expect(magnetic_field_point_charge_(5,vec1_,vec2_,vec3_)).to be_close_vector_to [-4.47214e-8,8.94427e-8,-4.47214e-8]
|
260
|
+
end
|
261
|
+
end
|
262
|
+
|
263
|
+
describe '#resistance_series' do
|
264
|
+
it 'returns correct resistance' do
|
265
|
+
expect(resistance_series(4,5)).to be_close_scalar_to 9
|
266
|
+
end
|
267
|
+
end
|
268
|
+
|
269
|
+
describe '#resistance_parallel' do
|
270
|
+
it 'returns correct resistance' do
|
271
|
+
expect(resistance_parallel(4,5)).to be_close_scalar_to 2.22222
|
272
|
+
end
|
273
|
+
end
|
274
|
+
|
275
|
+
describe '#inductance_series' do
|
276
|
+
it 'returns correct inductance' do
|
277
|
+
expect(inductance_series(4,5)).to be_close_scalar_to 9
|
278
|
+
end
|
279
|
+
end
|
280
|
+
|
281
|
+
describe '#inductance_parallel' do
|
282
|
+
it 'returns correct inductance' do
|
283
|
+
expect(inductance_parallel(4,5)).to be_close_scalar_to 2.22222
|
284
|
+
end
|
285
|
+
end
|
286
|
+
|
287
|
+
describe '#capacitance_series' do
|
288
|
+
it 'returns correct capacitance' do
|
289
|
+
expect(capacitance_series(4,5)).to be_close_scalar_to 2.22222
|
290
|
+
end
|
291
|
+
end
|
292
|
+
|
293
|
+
describe '#capacitance_parallel' do
|
294
|
+
it 'returns correct capacitance' do
|
295
|
+
expect(capacitance_parallel(4,5)).to be_close_scalar_to 9
|
296
|
+
end
|
297
|
+
end
|
298
|
+
|
299
|
+
|
300
|
+
# special relativity
|
301
|
+
|
302
|
+
speed = 259620269
|
303
|
+
|
304
|
+
describe '#lorentz_factor' do
|
305
|
+
it 'returns correct lorentz factor value' do
|
306
|
+
expect(lorentz_factor(speed)).to be_within(0.001).of 2.0
|
307
|
+
end
|
308
|
+
end
|
309
|
+
|
310
|
+
describe '#time_dilation' do
|
311
|
+
it 'returns correct time dilation' do
|
312
|
+
expect(time_dilation(10, speed)).to be_within(0.01).percent_of 20.0
|
313
|
+
end
|
314
|
+
end
|
315
|
+
|
316
|
+
describe '#length_contraction' do
|
317
|
+
it 'returns correct length contraction' do
|
318
|
+
expect(length_contraction(10, speed)).to be_within(0.01).percent_of 5.0
|
319
|
+
end
|
320
|
+
end
|
321
|
+
|
322
|
+
describe '#mass_relativistic' do
|
323
|
+
it 'returns correct relativistic mass' do
|
324
|
+
expect(mass_relativistic(10, speed)).to be_within(0.01).percent_of 20.0
|
325
|
+
end
|
326
|
+
end
|
327
|
+
|
328
|
+
describe '#momentum_relativistic' do
|
329
|
+
it 'returns correct relativistic momentum' do
|
330
|
+
expect(momentum_relativistic(10, speed)).to be_within(0.01).percent_of 5191948531
|
331
|
+
end
|
332
|
+
end
|
333
|
+
|
334
|
+
describe '#energy_rest' do
|
335
|
+
it 'returns correct rest energy' do
|
336
|
+
expect(energy_rest(10)).to be_within(0.01).percent_of 8.9875518e17
|
337
|
+
end
|
338
|
+
end
|
339
|
+
|
340
|
+
describe '#energy_photon' do
|
341
|
+
it 'returns correct photon energy' do
|
342
|
+
expect(energy_photon(1e10)).to be_within(0.01).percent_of 6.62606957e-24
|
343
|
+
end
|
344
|
+
end
|
345
|
+
|
346
|
+
describe '#momentum_photon' do
|
347
|
+
it 'returns correct photon momentum' do
|
348
|
+
expect(momentum_photon(1e10)).to be_within(0.01).percent_of 2.2102189e-32
|
349
|
+
end
|
350
|
+
end
|
351
|
+
|
352
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: physics_calculator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2013-09-04 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &27904776 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *27904776
|
25
25
|
description: Gem that contains many useful methods using physics formulas. Many of
|
26
26
|
them use the vector standard library. Formulas range from classical mechanics, quantum
|
27
27
|
mechanics, electricity and magnetism, and special relativity.
|
@@ -37,6 +37,7 @@ files:
|
|
37
37
|
- lib/physics_calculator.rb
|
38
38
|
- lib/physics_calculator/version.rb
|
39
39
|
- physics_calculator.gemspec
|
40
|
+
- spec/physics_calculator_spec.rb
|
40
41
|
homepage:
|
41
42
|
licenses:
|
42
43
|
- MIT
|
@@ -63,3 +64,4 @@ signing_key:
|
|
63
64
|
specification_version: 3
|
64
65
|
summary: Physics Calculator
|
65
66
|
test_files: []
|
67
|
+
has_rdoc:
|