float-formats 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,112 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+ require 'yaml'
3
+
4
+ include FltPnt
5
+
6
+ class TestFloatFormats < Test::Unit::TestCase
7
+
8
+ def setup
9
+ end
10
+
11
+ def test_nextprev
12
+ for tn in %w{IEEE_SINGLE IEEE_DOUBLE IEEE_EXTENDED IEEE_DEC32 IEEE_DEC64 IEEE_DEC128}
13
+ t = eval(tn)
14
+ z = t.from_fmt('0')
15
+ assert t.prev_float(t.min_value)==z,"#{tn}: prv min == 0"
16
+ assert t.next_float(z)==t.min_value,"#{tn}: nxt 0 == min"
17
+
18
+ mz = t.from_fmt('-0')
19
+ assert t.next_float(t.min_value(1))==mz,"#{tn}: nxt -min == -0"
20
+ assert t.prev_float(mz)==t.min_value(1),"#{tn}: prv -0 == -min"
21
+
22
+ assert t.prev_float(z)==t.min_value(1),"#{tn}: prv 0 == -min"
23
+ assert t.next_float(mz)==t.min_value,"#{tn}: nxt -0 == min"
24
+ end
25
+
26
+ for tn in %w{
27
+ APPLE XS128
28
+ BORLAND48
29
+ MBF_SINGLE MBF_DOUBLE
30
+ IEEE_SINGLE IEEE_DOUBLE IEEE_EXTENDED IEEE_128
31
+ IEEE_DEC32 IEEE_DEC64 IEEE_DEC128
32
+ XS256 XS256_DOUBLE
33
+ SATURN SATURN_X HP_CLASSIC
34
+ VAX_F VAX_D PDP11_F PDP11_D VAX_G VAX_H
35
+ IBM32 IBM64 IBM128 IBMX
36
+ CDC_SINGLE CDC_DOUBLE
37
+ CRAY
38
+ UNIVAC_SINGLE UNIVAC_DOUBLE
39
+ WANG2200
40
+ C51_BCD_FLOAT C51_BCD_DOUBLE C51_BCD_LONG_DOUBLE
41
+ }
42
+ t = eval(tn)
43
+ u = t.from_fmt('1')
44
+ mu = t.from_fmt('-1')
45
+ assert t.neg(t.next_float(u)) == t.prev_float(mu),"#{tn}: -nxt 1 == prv -1"
46
+ assert t.next_float(mu) == t.neg(t.prev_float(u)),"#{tn}: nxt -1 == -prv 1"
47
+
48
+ end
49
+
50
+ end
51
+
52
+ TEST_DATA = YAML.load(File.read(File.join(File.dirname(__FILE__),'test_data.yaml')))
53
+
54
+
55
+ def test_all
56
+
57
+ TEST_DATA.keys.each do |t|
58
+
59
+ flt = eval(t)
60
+
61
+ base = TEST_DATA[t]['base']
62
+
63
+ td = TEST_DATA[t]['parameters']
64
+
65
+ #puts "def test_#{t}_parameters"
66
+ for pair in td
67
+ attrb,v = pair.to_a.first
68
+ #puts " assert_equal #{v}, #{t}.#{attrb}"
69
+ assert_equal v, flt.send(attrb), "#{t}.#{attrb} == #{v}"
70
+ end
71
+ #puts "end"
72
+
73
+
74
+ td = TEST_DATA[t]['numerals']
75
+ #puts "def test_#{t}_numerals"
76
+ for pair in td
77
+ v,rep = pair.to_a.first
78
+ v_expr = "#{t}.from_fmt('#{v}')"
79
+ expr = base==:bytes ? "#{t}.to_hex(#{v_expr},true)" : "#{t}.to_bits_text(#{v_expr},#{base}).upcase"
80
+ #puts " assert_equal '#{rep}', #{expr}"
81
+ assert_equal rep, eval(expr), "#{expr} == '#{rep}'"
82
+ end
83
+ #puts "end"
84
+
85
+
86
+ td = TEST_DATA[t]['special']
87
+ #puts "def test_#{t}_special"
88
+ for pair in td
89
+ v,rep = pair.to_a.first
90
+ #next if v=='epsilon'
91
+ v_expr = "#{t}.#{v}"
92
+ expr = base==:bytes ? "#{t}.to_hex(#{v_expr},true)" : "#{t}.to_bits_text(#{v_expr},#{base}).upcase"
93
+ assert_equal rep, eval(expr), "#{expr} == '#{rep}'"
94
+ end
95
+ #puts "end"
96
+
97
+
98
+ td = TEST_DATA[t]['values']
99
+ #puts "def test_#{t}_values"
100
+ for pair in td
101
+ v,rep = pair.to_a.first
102
+ v_expr = "#{t}.from_number(#{v})"
103
+ expr = base==:bytes ? "#{t}.to_hex(#{v_expr},true)" : "#{t}.to_bits_text(#{v_expr},#{base}).upcase"
104
+ assert_equal rep, eval(expr), "#{expr} == '#{rep}'"
105
+ end
106
+ #puts "end"
107
+
108
+
109
+ end
110
+
111
+ end
112
+ end
@@ -0,0 +1,2 @@
1
+ require 'test/unit'
2
+ require File.dirname(__FILE__) + '/../lib/float-formats'
@@ -0,0 +1,25 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+ require File.dirname(__FILE__) + '/../lib/float-formats/native.rb'
3
+ require 'yaml'
4
+
5
+ require 'test/unit'
6
+
7
+ include FltPnt
8
+
9
+ class TestNativeFloat < Test::Unit::TestCase
10
+ def test_nextprev
11
+ assert Float::MIN_N.prev==Float::MAX_D
12
+ assert Float::MIN_N==Float::MAX_D.next
13
+ assert Float::MIN_D.prev==0.0
14
+ assert Float::MIN_D==0.0.next
15
+
16
+ assert((-Float::MIN_N).next==-Float::MAX_D)
17
+ assert(-(Float::MIN_N.prev)==-Float::MAX_D)
18
+ assert((-Float::MIN_D).next==0.0)
19
+ assert((-Float::MIN_D)==0.0.prev)
20
+
21
+
22
+ assert(-(1.0.next) == (-1.0).prev)
23
+ assert((-1.0).next == -(1.0.prev))
24
+ end
25
+ end
metadata ADDED
@@ -0,0 +1,88 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.9.2
3
+ specification_version: 1
4
+ name: float-formats
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.1.0
7
+ date: 2007-11-04 00:00:00 +01:00
8
+ summary: Floating-Point Formats
9
+ require_paths:
10
+ - lib
11
+ email: javier@goizueta.info
12
+ homepage: http://float-formats.rubyforge.org
13
+ rubyforge_project: float-formats
14
+ description: Floating-Point Formats
15
+ autorequire:
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: true
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
28
+ post_install_message:
29
+ authors:
30
+ - Javier Goizueta
31
+ files:
32
+ - History.txt
33
+ - License.txt
34
+ - Manifest.txt
35
+ - README.txt
36
+ - Rakefile
37
+ - config/hoe.rb
38
+ - config/requirements.rb
39
+ - lib/float-formats.rb
40
+ - lib/float-formats/version.rb
41
+ - lib/float-formats/bytes.rb
42
+ - lib/float-formats/classes.rb
43
+ - lib/float-formats/formats.rb
44
+ - lib/float-formats/native.rb
45
+ - log/debug.log
46
+ - script/destroy
47
+ - script/destroy.cmd
48
+ - script/generate
49
+ - script/generate.cmd
50
+ - script/txt2html
51
+ - script/txt2html.cmd
52
+ - setup.rb
53
+ - tasks/deployment.rake
54
+ - tasks/environment.rake
55
+ - tasks/website.rake
56
+ - test/test_float-formats.rb
57
+ - test/test_helper.rb
58
+ - test/test_data.yaml
59
+ - test/gen_test_data.rb
60
+ - test/test_native-float.rb
61
+ test_files:
62
+ - test/test_float-formats.rb
63
+ - test/test_helper.rb
64
+ - test/test_native-float.rb
65
+ rdoc_options:
66
+ - --main
67
+ - README.txt
68
+ extra_rdoc_files:
69
+ - History.txt
70
+ - License.txt
71
+ - Manifest.txt
72
+ - README.txt
73
+ executables: []
74
+
75
+ extensions: []
76
+
77
+ requirements: []
78
+
79
+ dependencies:
80
+ - !ruby/object:Gem::Dependency
81
+ name: nio
82
+ version_requirement:
83
+ version_requirements: !ruby/object:Gem::Version::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: 0.2.0
88
+ version: