Skip to content

Commit 1b3e33e

Browse files
author
Rick Button
committed
Refactored to implement basic complex/exactness support
1 parent b6a8545 commit 1b3e33e

26 files changed

Lines changed: 1345 additions & 1226 deletions
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
using NUnit.Framework;
2+
using Scheme.NET.Numbers;
3+
using System;
4+
using System.Collections.Generic;
5+
using System.Linq;
6+
using System.Text;
7+
using System.Threading.Tasks;
8+
9+
namespace Scheme.NET.Tests.NumberTests
10+
{
11+
[TestFixture]
12+
class NumberTests
13+
{
14+
private void TestPromote(Complex a, bool ab, bool aa, Complex b, bool bb, bool ba)
15+
{
16+
Assert.AreEqual(ab, a.IsExact());
17+
Assert.AreEqual(bb, b.IsExact());
18+
19+
a = a.PromoteRelative(b);
20+
Assert.AreEqual(aa, a.IsExact());
21+
22+
b = b.PromoteRelative(a);
23+
Assert.AreEqual(ba, b.IsExact());
24+
}
25+
26+
[Test]
27+
public void TestPromoteE()
28+
{
29+
Complex a = NumberTower.ExactInteger(1);
30+
Complex b = NumberTower.ExactInteger(1);
31+
TestPromote(a, true, true, b, true, true);
32+
}
33+
34+
[Test]
35+
public void TestPromoteI()
36+
{
37+
Complex a = NumberTower.InexactRational(1);
38+
Complex b = NumberTower.InexactRational(1);
39+
TestPromote(a, false, false, b, false, false);
40+
}
41+
42+
[Test]
43+
public void TestPromoteEI()
44+
{
45+
Complex a = NumberTower.ExactInteger(1);
46+
Complex b = NumberTower.InexactRational(1.0);
47+
48+
TestPromote(a, true, false, b, false, false);
49+
TestPromote(b, false, false, a, true, false);
50+
}
51+
52+
[Test]
53+
public void TestPromoteEILinq()
54+
{
55+
var ints = new int[] { 1, 1, 1, 1, 2, 1, 2, 1, 1, 1 };
56+
57+
var complexes = ints
58+
.Select(i => i == 1 ?
59+
(Complex)NumberTower.ExactInteger(i) :
60+
(Complex)NumberTower.InexactRational(i)).ToList();
61+
62+
Assert.AreEqual(2, complexes.Count(c => !c.IsExact()));
63+
complexes = complexes.Select(c => c.PromoteRelative(complexes)).ToList();
64+
Assert.AreEqual(10, complexes.Count(c => !c.IsExact()));
65+
66+
}
67+
68+
}
69+
}

src/Scheme.NET.Tests/ProcedureTests/CompareTest.cs

Lines changed: 54 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -14,109 +14,109 @@ class CompareTest : TestBase
1414
[Test]
1515
public void TestQuotient()
1616
{
17-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(5), Eval("(quotient 5 1)"));
18-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(3), Eval("(quotient 13 4)"));
19-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(-4), Eval("(quotient -13 4)"));
17+
Assert.AreEqual(AtomHelper.NumberFromComplex(5), Eval("(quotient 5 1)"));
18+
Assert.AreEqual(AtomHelper.NumberFromComplex(3), Eval("(quotient 13 4)"));
19+
Assert.AreEqual(AtomHelper.NumberFromComplex(-4), Eval("(quotient -13 4)"));
2020
}
2121

2222
[Test]
2323
public void TestRemainder()
2424
{
25-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(1), Eval("(remainder 13 4)"));
26-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(-1), Eval("(remainder -13 4)"));
27-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(1), Eval("(remainder 13 -4)"));
28-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(-1), Eval("(remainder -13 -4)"));
25+
Assert.AreEqual(AtomHelper.NumberFromComplex(1), Eval("(remainder 13 4)"));
26+
Assert.AreEqual(AtomHelper.NumberFromComplex(-1), Eval("(remainder -13 4)"));
27+
Assert.AreEqual(AtomHelper.NumberFromComplex(1), Eval("(remainder 13 -4)"));
28+
Assert.AreEqual(AtomHelper.NumberFromComplex(-1), Eval("(remainder -13 -4)"));
2929
}
3030

3131
[Test]
3232
public void TestModulo()
3333
{
34-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(1), Eval("(modulo 13 4)"));
35-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(3), Eval("(modulo -13 4)"));
36-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(-3), Eval("(modulo 13 -4)"));
37-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(-1), Eval("(modulo -13 -4)"));
34+
Assert.AreEqual(AtomHelper.NumberFromComplex(1), Eval("(modulo 13 4)"));
35+
Assert.AreEqual(AtomHelper.NumberFromComplex(3), Eval("(modulo -13 4)"));
36+
Assert.AreEqual(AtomHelper.NumberFromComplex(-3), Eval("(modulo 13 -4)"));
37+
Assert.AreEqual(AtomHelper.NumberFromComplex(-1), Eval("(modulo -13 -4)"));
3838
}
3939

4040
[Test]
4141
public void TestGcd()
4242
{
43-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(4), Eval("(gcd 32 -36 32)"));
44-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(32), Eval("(gcd 32)"));
45-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(0), Eval("(gcd)"));
43+
Assert.AreEqual(AtomHelper.NumberFromComplex(4), Eval("(gcd 32 -36 32)"));
44+
Assert.AreEqual(AtomHelper.NumberFromComplex(32), Eval("(gcd 32)"));
45+
Assert.AreEqual(AtomHelper.NumberFromComplex(0), Eval("(gcd)"));
4646
}
4747

4848
[Test]
4949
public void TestLcm()
5050
{
51-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(288), Eval("(lcm 32 -36)"));
52-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(32), Eval("(lcm 32)"));
53-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(1), Eval("(lcm)"));
51+
Assert.AreEqual(AtomHelper.NumberFromComplex(288), Eval("(lcm 32 -36)"));
52+
Assert.AreEqual(AtomHelper.NumberFromComplex(32), Eval("(lcm 32)"));
53+
Assert.AreEqual(AtomHelper.NumberFromComplex(1), Eval("(lcm)"));
5454
}
5555

5656
[Test]
5757
public void TestFloor()
5858
{
59-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(1), Eval("(floor 1.5)"));
60-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(1), Eval("(floor 1)"));
61-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(2000), Eval("(floor 2000.00001)"));
62-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(-1), Eval("(floor -.9)"));
63-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(-100), Eval("(floor -99.5)"));
64-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(-100), Eval("(floor -100)"));
59+
Assert.AreEqual(AtomHelper.NumberFromComplex(1), Eval("(floor 1.5)"));
60+
Assert.AreEqual(AtomHelper.NumberFromComplex(1), Eval("(floor 1)"));
61+
Assert.AreEqual(AtomHelper.NumberFromComplex(2000), Eval("(floor 2000.00001)"));
62+
Assert.AreEqual(AtomHelper.NumberFromComplex(-1), Eval("(floor -0.9)"));
63+
Assert.AreEqual(AtomHelper.NumberFromComplex(-100), Eval("(floor -99.5)"));
64+
Assert.AreEqual(AtomHelper.NumberFromComplex(-100), Eval("(floor -100)"));
6565
}
6666

6767
[Test]
6868
public void TestCeiling()
6969
{
70-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(2), Eval("(ceiling 1.5)"));
71-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(1), Eval("(ceiling 1)"));
72-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(2001), Eval("(ceiling 2000.00001)"));
73-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(0), Eval("(ceiling -.9)"));
74-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(-99), Eval("(ceiling -99.5)"));
75-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(-100), Eval("(ceiling -100)"));
70+
Assert.AreEqual(AtomHelper.NumberFromComplex(2), Eval("(ceiling 1.5)"));
71+
Assert.AreEqual(AtomHelper.NumberFromComplex(1), Eval("(ceiling 1)"));
72+
Assert.AreEqual(AtomHelper.NumberFromComplex(2001), Eval("(ceiling 2000.00001)"));
73+
Assert.AreEqual(AtomHelper.NumberFromComplex(0), Eval("(ceiling -0.9)"));
74+
Assert.AreEqual(AtomHelper.NumberFromComplex(-99), Eval("(ceiling -99.5)"));
75+
Assert.AreEqual(AtomHelper.NumberFromComplex(-100), Eval("(ceiling -100)"));
7676
}
7777

7878
[Test]
7979
public void TestTruncate()
8080
{
81-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(1), Eval("(truncate 1.5)"));
82-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(1), Eval("(truncate 1)"));
83-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(2000), Eval("(truncate 2000.00001)"));
84-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(0), Eval("(truncate -.9)"));
85-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(-99), Eval("(truncate -99.5)"));
86-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(-100), Eval("(truncate -100)"));
81+
Assert.AreEqual(AtomHelper.NumberFromComplex(1), Eval("(truncate 1.5)"));
82+
Assert.AreEqual(AtomHelper.NumberFromComplex(1), Eval("(truncate 1)"));
83+
Assert.AreEqual(AtomHelper.NumberFromComplex(2000), Eval("(truncate 2000.00001)"));
84+
Assert.AreEqual(AtomHelper.NumberFromComplex(0), Eval("(truncate -0.9)"));
85+
Assert.AreEqual(AtomHelper.NumberFromComplex(-99), Eval("(truncate -99.5)"));
86+
Assert.AreEqual(AtomHelper.NumberFromComplex(-100), Eval("(truncate -100)"));
8787
}
8888

8989
[Test]
9090
public void TestRound()
9191
{
92-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(2), Eval("(round 1.5)"));
93-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(1), Eval("(round 1)"));
94-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(2000), Eval("(round 2000.00001)"));
95-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(-1), Eval("(round -.9)"));
96-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(-100), Eval("(round -99.5)"));
97-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(-100), Eval("(round -100)"));
98-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(4), Eval("(round 4.4)"));
99-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(5), Eval("(round 4.5)"));
100-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(5), Eval("(round 4.6)"));
101-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(-4), Eval("(round -4.4)"));
102-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(-5), Eval("(round -4.5)"));
103-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(-5), Eval("(round -4.6)"));
92+
Assert.AreEqual(AtomHelper.NumberFromComplex(2), Eval("(round 1.5)"));
93+
Assert.AreEqual(AtomHelper.NumberFromComplex(1), Eval("(round 1)"));
94+
Assert.AreEqual(AtomHelper.NumberFromComplex(2000), Eval("(round 2000.00001)"));
95+
Assert.AreEqual(AtomHelper.NumberFromComplex(-1), Eval("(round -0.9)"));
96+
Assert.AreEqual(AtomHelper.NumberFromComplex(-100), Eval("(round -99.5)"));
97+
Assert.AreEqual(AtomHelper.NumberFromComplex(-100), Eval("(round -100)"));
98+
Assert.AreEqual(AtomHelper.NumberFromComplex(4), Eval("(round 4.4)"));
99+
Assert.AreEqual(AtomHelper.NumberFromComplex(4), Eval("(round 4.5)"));
100+
Assert.AreEqual(AtomHelper.NumberFromComplex(5), Eval("(round 4.6)"));
101+
Assert.AreEqual(AtomHelper.NumberFromComplex(-4), Eval("(round -4.4)"));
102+
Assert.AreEqual(AtomHelper.NumberFromComplex(-4), Eval("(round -4.5)"));
103+
Assert.AreEqual(AtomHelper.NumberFromComplex(-5), Eval("(round -4.6)"));
104104
}
105105

106106
[Test]
107107
public void TestMinMax()
108108
{
109-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(3), Eval("(max 0 1 2 3)"));
110-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(3), Eval("(max -1 1 2 3)"));
111-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(0), Eval("(min 0 1 2 3)"));
112-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(-1), Eval("(min -1 1 2 3)"));
109+
Assert.AreEqual(AtomHelper.NumberFromComplex(3), Eval("(max 0 1 2 3)"));
110+
Assert.AreEqual(AtomHelper.NumberFromComplex(3), Eval("(max -1 1 2 3)"));
111+
Assert.AreEqual(AtomHelper.NumberFromComplex(0), Eval("(min 0 1 2 3)"));
112+
Assert.AreEqual(AtomHelper.NumberFromComplex(-1), Eval("(min -1 1 2 3)"));
113113
}
114114

115115
[Test]
116116
public void TestAbs()
117117
{
118-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(3), Eval("(abs 3)"));
119-
Assert.AreEqual(AtomHelper.NumberFromBigDecimal(3), Eval("(abs -3)"));
118+
Assert.AreEqual(AtomHelper.NumberFromComplex(3), Eval("(abs 3)"));
119+
Assert.AreEqual(AtomHelper.NumberFromComplex(3), Eval("(abs -3)"));
120120
}
121121

122122
[Test]
@@ -139,7 +139,7 @@ public void TestIncreasing()
139139
public void TestDecreasing()
140140
{
141141
Assert.AreEqual(AtomHelper.True, Eval("(> 6 5 4 3 2 1)"));
142-
Assert.AreEqual(AtomHelper.True, Eval("(> 1.111 1.11. 1.1 1.0)"));
142+
Assert.AreEqual(AtomHelper.True, Eval("(> 1.111 1.11 1.1 1.0)"));
143143
Assert.AreEqual(AtomHelper.False, Eval("(> 2 2 1)"));
144144
}
145145

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
using NUnit.Framework;
2+
using Scheme.NET.Scheme;
3+
using System;
4+
using System.Collections.Generic;
5+
using System.Linq;
6+
using System.Text;
7+
using System.Threading.Tasks;
8+
9+
namespace Scheme.NET.Tests.ProcedureTests
10+
{
11+
[TestFixture]
12+
class ConvertTest : TestBase
13+
{
14+
[Test]
15+
public void TestNumberToString()
16+
{
17+
// radix 2,8,10,16
18+
// integer, rational, real, complex
19+
20+
// radix 2, integer
21+
Assert.AreEqual(AtomHelper.StringFromString("1100100"), Eval("(number->string 100 2)"));
22+
Assert.AreEqual(AtomHelper.StringFromString("-1100100"), Eval("(number->string -100 2)"));
23+
24+
25+
// radix 8, integer
26+
Assert.AreEqual(AtomHelper.StringFromString("144"), Eval("(number->string 100 8)"));
27+
Assert.AreEqual(AtomHelper.StringFromString("-144"), Eval("(number->string -100 8)"));
28+
29+
// radix 10, integer
30+
Assert.AreEqual(AtomHelper.StringFromString("100"), Eval("(number->string 100)"));
31+
Assert.AreEqual(AtomHelper.StringFromString("100"), Eval("(number->string 100 10)"));
32+
Assert.AreEqual(AtomHelper.StringFromString("-100"), Eval("(number->string -100)"));
33+
Assert.AreEqual(AtomHelper.StringFromString("-100"), Eval("(number->string -100 10)"));
34+
35+
// radix 16, integer
36+
Assert.AreEqual(AtomHelper.StringFromString("64"), Eval("(number->string 100 16)"));
37+
Assert.AreEqual(AtomHelper.StringFromString("-64"), Eval("(number->string -100 16)"));
38+
39+
// radix 2, rational
40+
Assert.AreEqual(AtomHelper.StringFromString("1101101/1000"), Eval("(number->string 109/8 2)"));
41+
Assert.AreEqual(AtomHelper.StringFromString("-1101101/1000"), Eval("(number->string -109/8 2)"));
42+
43+
// radix 8, rational
44+
Assert.AreEqual(AtomHelper.StringFromString("155/10"), Eval("(number->string 109/8 8)"));
45+
Assert.AreEqual(AtomHelper.StringFromString("-155/10"), Eval("(number->string -109/8 8)"));
46+
47+
// radix 10, rational
48+
Assert.AreEqual(AtomHelper.StringFromString("109/8"), Eval("(number->string 109/8 10)"));
49+
Assert.AreEqual(AtomHelper.StringFromString("-109/8"), Eval("(number->string -109/8 10)"));
50+
51+
// radix 16, rational
52+
Assert.AreEqual(AtomHelper.StringFromString("6d/8"), Eval("(number->string 109/8 16)"));
53+
Assert.AreEqual(AtomHelper.StringFromString("-6d/8"), Eval("(number->string -109/8 16)"));
54+
55+
// radix 2, reals
56+
Assert.AreEqual(AtomHelper.StringFromString("1101.101"), Eval("(number->string 13.625 2)"));
57+
Assert.AreEqual(AtomHelper.StringFromString("-1101.101"), Eval("(number->string -13.625 2)"));
58+
59+
// radix 8, reals
60+
Assert.AreEqual(AtomHelper.StringFromString("15.5"), Eval("(number->string 13.625 8)"));
61+
Assert.AreEqual(AtomHelper.StringFromString("-15.5"), Eval("(number->string -13.625 8)"));
62+
63+
// radix 10, reals
64+
Assert.AreEqual(AtomHelper.StringFromString("13.625"), Eval("(number->string 13.625 10)"));
65+
Assert.AreEqual(AtomHelper.StringFromString("-13.625"), Eval("(number->string -13.625 10)"));
66+
67+
// radix 16, reals
68+
Assert.AreEqual(AtomHelper.StringFromString("d.a"), Eval("(number->string 13.625 16)"));
69+
Assert.AreEqual(AtomHelper.StringFromString("-d.a"), Eval("(number->string -13.625 16)"));
70+
71+
// radix 2, complex, rationals
72+
Assert.AreEqual(AtomHelper.StringFromString("101/11+101/11i"), Eval("(number->string 5/3+5/3i 2)"));
73+
Assert.AreEqual(AtomHelper.StringFromString("101/11-101/11i"), Eval("(number->string 5/3-5/3i 2)"));
74+
Assert.AreEqual(AtomHelper.StringFromString("-101/11+101/11i"), Eval("(number->string -5/3+5/3i 2)"));
75+
Assert.AreEqual(AtomHelper.StringFromString("-101/11-101/11i"), Eval("(number->string -5/3-5/3i 2)"));
76+
77+
// radix 8, complex, rationals
78+
Assert.AreEqual(AtomHelper.StringFromString("5/3+5/3i"), Eval("(number->string 5/3+5/3i 8)"));
79+
Assert.AreEqual(AtomHelper.StringFromString("5/3-5/3i"), Eval("(number->string 5/3-5/3i 8)"));
80+
Assert.AreEqual(AtomHelper.StringFromString("-5/3+5/3i"), Eval("(number->string -5/3+5/3i 8)"));
81+
Assert.AreEqual(AtomHelper.StringFromString("-5/3-5/3i"), Eval("(number->string -5/3-5/3i 8)"));
82+
83+
// radix 10, complex, rationals
84+
Assert.AreEqual(AtomHelper.StringFromString("5/3+5/3i"), Eval("(number->string 5/3+5/3i 10)"));
85+
Assert.AreEqual(AtomHelper.StringFromString("5/3-5/3i"), Eval("(number->string 5/3-5/3i 10)"));
86+
Assert.AreEqual(AtomHelper.StringFromString("-5/3+5/3i"), Eval("(number->string -5/3+5/3i 10)"));
87+
Assert.AreEqual(AtomHelper.StringFromString("-5/3-5/3i"), Eval("(number->string -5/3-5/3i 10)"));
88+
89+
// radix 16, complex, rationals
90+
Assert.AreEqual(AtomHelper.StringFromString("5/3+5/3i"), Eval("(number->string 5/3+5/3i 16)"));
91+
Assert.AreEqual(AtomHelper.StringFromString("5/3-5/3i"), Eval("(number->string 5/3-5/3i 16)"));
92+
Assert.AreEqual(AtomHelper.StringFromString("-5/3+5/3i"), Eval("(number->string -5/3+5/3i 16)"));
93+
Assert.AreEqual(AtomHelper.StringFromString("-5/3-5/3i"), Eval("(number->string -5/3-5/3i 16)"));
94+
95+
// radix 2, complex, reals
96+
Assert.AreEqual(AtomHelper.StringFromString("1101.101+1101.101i"), Eval("(number->string 13.625+13.625i 2)"));
97+
Assert.AreEqual(AtomHelper.StringFromString("1101.101-1101.101i"), Eval("(number->string 13.625-13.625i 2)"));
98+
Assert.AreEqual(AtomHelper.StringFromString("-1101.101+1101.101i"), Eval("(number->string -13.625+13.625i 2)"));
99+
Assert.AreEqual(AtomHelper.StringFromString("-1101.101-1101.101i"), Eval("(number->string -13.625-13.625i 2)"));
100+
101+
// radix 8, complex, reals
102+
Assert.AreEqual(AtomHelper.StringFromString("15.5+15.5i"), Eval("(number->string 13.625+13.625i 8)"));
103+
Assert.AreEqual(AtomHelper.StringFromString("15.5-15.5i"), Eval("(number->string 13.625-13.625i 8)"));
104+
Assert.AreEqual(AtomHelper.StringFromString("-15.5+15.5i"), Eval("(number->string -13.625+13.625i 8)"));
105+
Assert.AreEqual(AtomHelper.StringFromString("-15.5-15.5i"), Eval("(number->string -13.625-13.625i 8)"));
106+
107+
// radix 10, complex, reals
108+
Assert.AreEqual(AtomHelper.StringFromString("13.625+13.625i"), Eval("(number->string 13.625+13.625i 10)"));
109+
Assert.AreEqual(AtomHelper.StringFromString("13.625-13.625i"), Eval("(number->string 13.625-13.625i 10)"));
110+
Assert.AreEqual(AtomHelper.StringFromString("-13.625+13.625i"), Eval("(number->string -13.625+13.625i 10)"));
111+
Assert.AreEqual(AtomHelper.StringFromString("-13.625-13.625i"), Eval("(number->string -13.625-13.625i 10)"));
112+
113+
// radix 16, complex, reals
114+
Assert.AreEqual(AtomHelper.StringFromString("d.a+d.ai"), Eval("(number->string 13.625+13.625i 16)"));
115+
Assert.AreEqual(AtomHelper.StringFromString("d.a-d.ai"), Eval("(number->string 13.625-13.625i 16)"));
116+
Assert.AreEqual(AtomHelper.StringFromString("-d.a+d.ai"), Eval("(number->string -13.625+13.625i 16)"));
117+
Assert.AreEqual(AtomHelper.StringFromString("-d.a-d.ai"), Eval("(number->string -13.625-13.625i 16)"));
118+
}
119+
}
120+
}

0 commit comments

Comments
 (0)