aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2018-12-12 21:41:40 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2018-12-12 21:41:40 +0100
commit9a23b07c4c0d06c40d7c0ce91c5fdf7c8449ac49 (patch)
tree9b1a85084b1e046b0a5b5eb06375334ef1eb2f56
parentd6ad3666dc51f475a6e76b07f2c59d039f69f2d4 (diff)
downloadbusybox-9a23b07c4c0d06c40d7c0ce91c5fdf7c8449ac49.tar.gz
testsuite: add bc and dc tests
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rwxr-xr-xtestsuite/bc.tests19
-rw-r--r--testsuite/bc_add.bc26
-rw-r--r--testsuite/bc_add_results.txt38
-rw-r--r--testsuite/bc_arctangent.bc26
-rw-r--r--testsuite/bc_arctangent_results.txt25
-rw-r--r--testsuite/bc_array.bc35
-rw-r--r--testsuite/bc_array_results.txt426
-rw-r--r--testsuite/bc_arrays.bc10
-rw-r--r--testsuite/bc_arrays_results.txt3
-rw-r--r--testsuite/bc_bessel.bc844
-rw-r--r--testsuite/bc_bessel_results.txt843
-rw-r--r--testsuite/bc_boolean.bc181
-rw-r--r--testsuite/bc_boolean_results.txt181
-rw-r--r--testsuite/bc_cosine.bc44
-rw-r--r--testsuite/bc_cosine_results.txt41
-rw-r--r--testsuite/bc_decimal.bc36
-rw-r--r--testsuite/bc_decimal_results.txt51
-rw-r--r--testsuite/bc_divide.bc31
-rw-r--r--testsuite/bc_divide_results.txt31
-rw-r--r--testsuite/bc_exponent.bc22
-rw-r--r--testsuite/bc_exponent_results.txt25
-rw-r--r--testsuite/bc_large.tar.xzbin0 -> 5118896 bytes
-rw-r--r--testsuite/bc_log.bc22
-rw-r--r--testsuite/bc_log_results.txt22
-rw-r--r--testsuite/bc_misc.bc13
-rw-r--r--testsuite/bc_misc1.bc76
-rw-r--r--testsuite/bc_misc1_results.txt57
-rw-r--r--testsuite/bc_misc2.bc45
-rw-r--r--testsuite/bc_misc2_results.txt20
-rw-r--r--testsuite/bc_misc_results.txt4
-rw-r--r--testsuite/bc_modulus.bc70
-rw-r--r--testsuite/bc_modulus_results.txt69
-rw-r--r--testsuite/bc_multiply.bc42
-rw-r--r--testsuite/bc_multiply_results.txt43
-rw-r--r--testsuite/bc_pi.bc4
-rw-r--r--testsuite/bc_pi_results.txt135
-rw-r--r--testsuite/bc_power.bc44
-rw-r--r--testsuite/bc_power_results.txt73
-rw-r--r--testsuite/bc_sine.bc207
-rw-r--r--testsuite/bc_sine_results.txt204
-rw-r--r--testsuite/bc_sqrt.bc18
-rw-r--r--testsuite/bc_sqrt_results.txt16
-rw-r--r--testsuite/bc_strings.bc12
-rw-r--r--testsuite/bc_strings_results.txt5
-rw-r--r--testsuite/bc_subtract.bc32
-rw-r--r--testsuite/bc_subtract_results.txt36
-rw-r--r--testsuite/bc_vars.bc7
-rw-r--r--testsuite/bc_vars_results.txt12
-rwxr-xr-xtestsuite/dc.tests20
-rw-r--r--testsuite/dc_add.dc33
-rw-r--r--testsuite/dc_add_results.txt45
-rw-r--r--testsuite/dc_boolean.dc27
-rw-r--r--testsuite/dc_boolean_results.txt27
-rw-r--r--testsuite/dc_decimal.dc36
-rw-r--r--testsuite/dc_decimal_results.txt51
-rw-r--r--testsuite/dc_divide.dc33
-rw-r--r--testsuite/dc_divide_results.txt32
-rw-r--r--testsuite/dc_divmod.dc64
-rw-r--r--testsuite/dc_divmod_results.txt126
-rw-r--r--testsuite/dc_misc.dc1
-rw-r--r--testsuite/dc_misc_results.txt20
-rw-r--r--testsuite/dc_modexp.dc103
-rw-r--r--testsuite/dc_modexp_results.txt103
-rw-r--r--testsuite/dc_modulus.dc70
-rw-r--r--testsuite/dc_modulus_results.txt68
-rw-r--r--testsuite/dc_multiply.dc42
-rw-r--r--testsuite/dc_multiply_results.txt43
-rw-r--r--testsuite/dc_power.dc45
-rw-r--r--testsuite/dc_power_results.txt73
-rw-r--r--testsuite/dc_sqrt.dc14
-rw-r--r--testsuite/dc_sqrt_results.txt13
-rw-r--r--testsuite/dc_strings.dc37
-rw-r--r--testsuite/dc_strings_results.txt36
-rw-r--r--testsuite/dc_subtract.dc33
-rw-r--r--testsuite/dc_subtract_results.txt37
-rw-r--r--testsuite/dcx_vars.dc2
-rw-r--r--testsuite/dcx_vars_results.txt6
77 files changed, 5466 insertions, 0 deletions
diff --git a/testsuite/bc.tests b/testsuite/bc.tests
new file mode 100755
index 000000000..32460092b
--- /dev/null
+++ b/testsuite/bc.tests
@@ -0,0 +1,19 @@
+#!/bin/sh
+# Copyright 2018 by Denys Vlasenko
+# Licensed under GPLv2 or later, see file LICENSE in this source tree.
+
+. ./testing.sh
+
+tar xJf bc_large.tar.xz
+
+for f in bc*.bc; do
+ r="`basename "$f" .bc`_results.txt"
+ test -f "$r" || continue
+ # testing "test name" "command" "expected result" "file input" "stdin"
+ testing "bc -lq $f" \
+ "{ { bc -lq $f 2>&1; echo E:\$? >&2; } | diff -u - $r; echo E:\$?; } 2>&1" \
+ "E:0\nE:0\n" \
+ "" ""
+done
+
+exit $FAILCOUNT
diff --git a/testsuite/bc_add.bc b/testsuite/bc_add.bc
new file mode 100644
index 000000000..ee03b4bb6
--- /dev/null
+++ b/testsuite/bc_add.bc
@@ -0,0 +1,26 @@
+0 + 0
+0 + 1
+1 + 1
+1 + 0
+2 + 5
+237 + 483
+999 + 999
+2374623 + 324869356734856
+2378639084586723980562 + 23468729367839
+37298367203972395108367910823465293084561329084561390845613409516734503870691837451 + 785621394067928346918023476190834672198467134908618723249671349062187346898241093486139046139084613490817356023871869102746182749061872609129847
+1.1 + 0
+0 + 1.1
+457283.731284923576 + 37842934672834.3874629385672354
+1.0 + 0.1
+3746289134067138046 + 0.138375863945672398456712389456273486293
+-1 + -1
+-4 + -15
+-1346782 + -1287904651762468913476
+99999999999999999999999999999999999999999999999999999999999.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 + 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
+99999999999999999999999999999999999999999999999999999999999.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999995 + 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005
+99999999999999999999999999999999999999999999999999999999999.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 + 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
+99999999999999999999999999999999999999999999999999999999999.999999999999999999999999999999999999999999999999999999999899999999999999999999999999999999999999999999999999999999999999 + 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
+99999999999999999999999999999999999989999999999999999999999.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 + 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
+-1889985797 + 2012747315
+0 + -14338.391079082
+-2422297 + 1.3134942556
diff --git a/testsuite/bc_add_results.txt b/testsuite/bc_add_results.txt
new file mode 100644
index 000000000..c3b4d6d2a
--- /dev/null
+++ b/testsuite/bc_add_results.txt
@@ -0,0 +1,38 @@
+0
+1
+2
+1
+7
+720
+1998
+324869359109479
+2378639108055453348401
+78562139406792834691802347619083467219846713490861872324967138636055\
+45508706362018540498696043776980521464405852627147161556994835657433\
+00967298
+1.1
+1.1
+37842935130118.1187478621432354
+1.1
+3746289134067138046.138375863945672398456712389456273486293
+-2
+-19
+-1287904651762470260258
+100000000000000000000000000000000000000000000000000000000000.0000000\
+00000000000000000000000000000000000000000000000000000000000000000000\
+000000000000000000000000000000000000000000000
+100000000000000000000000000000000000000000000000000000000000.0000000\
+00000000000000000000000000000000000000000000000000000000000000000000\
+000000000000000000000000000000000000000000000
+100000000000000000000000000000000000000000000000000000000000.0000000\
+00000000000000000000000000000000000000000000000000000000000000000000\
+000000000000000000000000000000000000000009999
+99999999999999999999999999999999999999999999999999999999999.99999999\
+99999999999999999999999999999999999999999999999999000000000000000000\
+00000000000000000000000000000000000000009999
+99999999999999999999999999999999999990000000000000000000000.00000000\
+00000000000000000000000000000000000000000000000000000000000000000000\
+00000000000000000000000000000000000000009999
+122761518
+-14338.391079082
+-2422295.6865057444
diff --git a/testsuite/bc_arctangent.bc b/testsuite/bc_arctangent.bc
new file mode 100644
index 000000000..f665ea90b
--- /dev/null
+++ b/testsuite/bc_arctangent.bc
@@ -0,0 +1,26 @@
+a(.267)
+a(1)
+scale = 64
+a(.267)
+a(1)
+scale = 100
+a(.267)
+a(1)
+scale = 20
+a(0)
+a(.5)
+a(0.577350269189625764509148780501)
+a(1.5)
+a(1.7320508075688772935274463415)
+a(2)
+a(3)
+a(1000)
+a(-.5)
+a(-0.577350269189625764509148780501)
+a(-1.5)
+a(-1.7320508075688772935274463415)
+a(-2)
+a(-3)
+a(-1000)
+a(-3249917614.2821897119)
+a(-694706362.1974670468)
diff --git a/testsuite/bc_arctangent_results.txt b/testsuite/bc_arctangent_results.txt
new file mode 100644
index 000000000..e77c63779
--- /dev/null
+++ b/testsuite/bc_arctangent_results.txt
@@ -0,0 +1,25 @@
+.26091356923294057959
+.78539816339744830961
+.2609135692329405795967852677779865639774740239882445822329882917
+.7853981633974483096156608458198757210492923498437764552437361480
+.2609135692329405795967852677779865639774740239882445822329882917230\
+650591934644905491823044536954978
+.7853981633974483096156608458198757210492923498437764552437361480769\
+541015715522496570087063355292669
+0
+.46364760900080611621
+.52359877559829887307
+.98279372324732906798
+1.04719755119659774615
+1.10714871779409050301
+1.24904577239825442582
+1.56979632712822975256
+-.46364760900080611621
+-.52359877559829887307
+-.98279372324732906798
+-1.04719755119659774615
+-1.10714871779409050301
+-1.24904577239825442582
+-1.56979632712822975256
+-1.57079632648719651151
+-1.57079632535543952711
diff --git a/testsuite/bc_array.bc b/testsuite/bc_array.bc
new file mode 100644
index 000000000..3bb680178
--- /dev/null
+++ b/testsuite/bc_array.bc
@@ -0,0 +1,35 @@
+#! /usr/bin/bc -q
+
+define z(a[]) {
+ for (i = 0; i < l; ++i) {
+ a[i]
+ }
+}
+
+define x(a[]) {
+
+ for (i = 0; i < l; ++i) {
+ a[i] = -i
+ }
+
+ z(a[])
+}
+
+for (i = 0; i < 101; ++i) {
+ a[i] = i
+}
+
+a[104] = 204
+
+l = length(a[])
+
+for (i = 0; i <= l; ++i) {
+ a[i]
+}
+
+z(a[])
+x(a[])
+z(a[])
+l
+
+halt
diff --git a/testsuite/bc_array_results.txt b/testsuite/bc_array_results.txt
new file mode 100644
index 000000000..a757b7fb5
--- /dev/null
+++ b/testsuite/bc_array_results.txt
@@ -0,0 +1,426 @@
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+0
+0
+0
+204
+0
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+0
+0
+0
+204
+0
+0
+-1
+-2
+-3
+-4
+-5
+-6
+-7
+-8
+-9
+-10
+-11
+-12
+-13
+-14
+-15
+-16
+-17
+-18
+-19
+-20
+-21
+-22
+-23
+-24
+-25
+-26
+-27
+-28
+-29
+-30
+-31
+-32
+-33
+-34
+-35
+-36
+-37
+-38
+-39
+-40
+-41
+-42
+-43
+-44
+-45
+-46
+-47
+-48
+-49
+-50
+-51
+-52
+-53
+-54
+-55
+-56
+-57
+-58
+-59
+-60
+-61
+-62
+-63
+-64
+-65
+-66
+-67
+-68
+-69
+-70
+-71
+-72
+-73
+-74
+-75
+-76
+-77
+-78
+-79
+-80
+-81
+-82
+-83
+-84
+-85
+-86
+-87
+-88
+-89
+-90
+-91
+-92
+-93
+-94
+-95
+-96
+-97
+-98
+-99
+-100
+-101
+-102
+-103
+-104
+0
+0
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+0
+0
+0
+204
+0
+105
diff --git a/testsuite/bc_arrays.bc b/testsuite/bc_arrays.bc
new file mode 100644
index 000000000..26a284b8d
--- /dev/null
+++ b/testsuite/bc_arrays.bc
@@ -0,0 +1,10 @@
+a[0] = 1
+a[2-1] = 2
+
+a[0]+a[0]
+
+a[2-1]+a[2-1]
+
+a[5] = 2
+a[5.789]
+
diff --git a/testsuite/bc_arrays_results.txt b/testsuite/bc_arrays_results.txt
new file mode 100644
index 000000000..200035ffa
--- /dev/null
+++ b/testsuite/bc_arrays_results.txt
@@ -0,0 +1,3 @@
+2
+4
+2
diff --git a/testsuite/bc_bessel.bc b/testsuite/bc_bessel.bc
new file mode 100644
index 000000000..a52fa356b
--- /dev/null
+++ b/testsuite/bc_bessel.bc
@@ -0,0 +1,844 @@
+j(0, 0)
+j(0, .5)
+j(0, -.5)
+j(0, 1)
+j(0, -1)
+j(0, 1.5)
+j(0, -1.5)
+j(0, 1.74)
+j(0, -1.74)
+j(0, 2)
+j(0, -2)
+j(0, 3.2345)
+j(0, -3.2345)
+j(0, 100)
+j(0, -100)
+j(0, -.5)
+j(0, .5)
+j(0, -1)
+j(0, 1)
+j(0, -1.5)
+j(0, 1.5)
+j(0, -1.74)
+j(0, 1.74)
+j(0, -2)
+j(0, 2)
+j(0, -3.2345)
+j(0, 3.2345)
+j(0, -100)
+j(0, 100)
+j(.5, 0)
+j(.5, .5)
+j(.5, -.5)
+j(.5, 1)
+j(.5, -1)
+j(.5, 1.5)
+j(.5, -1.5)
+j(.5, 1.74)
+j(.5, -1.74)
+j(.5, 2)
+j(.5, -2)
+j(.5, 3.2345)
+j(.5, -3.2345)
+j(.5, 100)
+j(.5, -100)
+j(.5, -.5)
+j(.5, .5)
+j(.5, -1)
+j(.5, 1)
+j(.5, -1.5)
+j(.5, 1.5)
+j(.5, -1.74)
+j(.5, 1.74)
+j(.5, -2)
+j(.5, 2)
+j(.5, -3.2345)
+j(.5, 3.2345)
+j(.5, -100)
+j(.5, 100)
+j(-.5, 0)
+j(-.5, .5)
+j(-.5, -.5)
+j(-.5, 1)
+j(-.5, -1)
+j(-.5, 1.5)
+j(-.5, -1.5)
+j(-.5, 1.74)
+j(-.5, -1.74)
+j(-.5, 2)
+j(-.5, -2)
+j(-.5, 3.2345)
+j(-.5, -3.2345)
+j(-.5, 100)
+j(-.5, -100)
+j(-.5, -.5)
+j(-.5, .5)
+j(-.5, -1)
+j(-.5, 1)
+j(-.5, -1.5)
+j(-.5, 1.5)
+j(-.5, -1.74)
+j(-.5, 1.74)
+j(-.5, -2)
+j(-.5, 2)
+j(-.5, -3.2345)
+j(-.5, 3.2345)
+j(-.5, -100)
+j(-.5, 100)
+j(1, 0)
+j(1, .5)
+j(1, -.5)
+j(1, 1)
+j(1, -1)
+j(1, 1.5)
+j(1, -1.5)
+j(1, 1.74)
+j(1, -1.74)
+j(1, 2)
+j(1, -2)
+j(1, 3.2345)
+j(1, -3.2345)
+j(1, 100)
+j(1, -100)
+j(1, -.5)
+j(1, .5)
+j(1, -1)
+j(1, 1)
+j(1, -1.5)
+j(1, 1.5)
+j(1, -1.74)
+j(1, 1.74)
+j(1, -2)
+j(1, 2)
+j(1, -3.2345)
+j(1, 3.2345)
+j(1, -100)
+j(1, 100)
+j(-1, 0)
+j(-1, .5)
+j(-1, -.5)
+j(-1, 1)
+j(-1, -1)
+j(-1, 1.5)
+j(-1, -1.5)
+j(-1, 1.74)
+j(-1, -1.74)
+j(-1, 2)
+j(-1, -2)
+j(-1, 3.2345)
+j(-1, -3.2345)
+j(-1, 100)
+j(-1, -100)
+j(-1, -.5)
+j(-1, .5)
+j(-1, -1)
+j(-1, 1)
+j(-1, -1.5)
+j(-1, 1.5)
+j(-1, -1.74)
+j(-1, 1.74)
+j(-1, -2)
+j(-1, 2)
+j(-1, -3.2345)
+j(-1, 3.2345)
+j(-1, -100)
+j(-1, 100)
+j(1.5, 0)
+j(1.5, .5)
+j(1.5, -.5)
+j(1.5, 1)
+j(1.5, -1)
+j(1.5, 1.5)
+j(1.5, -1.5)
+j(1.5, 1.74)
+j(1.5, -1.74)
+j(1.5, 2)
+j(1.5, -2)
+j(1.5, 3.2345)
+j(1.5, -3.2345)
+j(1.5, 100)
+j(1.5, -100)
+j(1.5, -.5)
+j(1.5, .5)
+j(1.5, -1)
+j(1.5, 1)
+j(1.5, -1.5)
+j(1.5, 1.5)
+j(1.5, -1.74)
+j(1.5, 1.74)
+j(1.5, -2)
+j(1.5, 2)
+j(1.5, -3.2345)
+j(1.5, 3.2345)
+j(1.5, -100)
+j(1.5, 100)
+j(-1.5, 0)
+j(-1.5, .5)
+j(-1.5, -.5)
+j(-1.5, 1)
+j(-1.5, -1)
+j(-1.5, 1.5)
+j(-1.5, -1.5)
+j(-1.5, 1.74)
+j(-1.5, -1.74)
+j(-1.5, 2)
+j(-1.5, -2)
+j(-1.5, 3.2345)
+j(-1.5, -3.2345)
+j(-1.5, 100)
+j(-1.5, -100)
+j(-1.5, -.5)
+j(-1.5, .5)
+j(-1.5, -1)
+j(-1.5, 1)
+j(-1.5, -1.5)
+j(-1.5, 1.5)
+j(-1.5, -1.74)
+j(-1.5, 1.74)
+j(-1.5, -2)
+j(-1.5, 2)
+j(-1.5, -3.2345)
+j(-1.5, 3.2345)
+j(-1.5, -100)
+j(-1.5, 100)
+j(1.74, 0)
+j(1.74, .5)
+j(1.74, -.5)
+j(1.74, 1)
+j(1.74, -1)
+j(1.74, 1.5)
+j(1.74, -1.5)
+j(1.74, 1.74)
+j(1.74, -1.74)
+j(1.74, 2)
+j(1.74, -2)
+j(1.74, 3.2345)
+j(1.74, -3.2345)
+j(1.74, 100)
+j(1.74, -100)
+j(1.74, -.5)
+j(1.74, .5)
+j(1.74, -1)
+j(1.74, 1)
+j(1.74, -1.5)
+j(1.74, 1.5)
+j(1.74, -1.74)
+j(1.74, 1.74)
+j(1.74, -2)
+j(1.74, 2)
+j(1.74, -3.2345)
+j(1.74, 3.2345)
+j(1.74, -100)
+j(1.74, 100)
+j(-1.74, 0)
+j(-1.74, .5)
+j(-1.74, -.5)
+j(-1.74, 1)
+j(-1.74, -1)
+j(-1.74, 1.5)
+j(-1.74, -1.5)
+j(-1.74, 1.74)
+j(-1.74, -1.74)
+j(-1.74, 2)
+j(-1.74, -2)
+j(-1.74, 3.2345)
+j(-1.74, -3.2345)
+j(-1.74, 100)
+j(-1.74, -100)
+j(-1.74, -.5)
+j(-1.74, .5)
+j(-1.74, -1)
+j(-1.74, 1)
+j(-1.74, -1.5)
+j(-1.74, 1.5)
+j(-1.74, -1.74)
+j(-1.74, 1.74)
+j(-1.74, -2)
+j(-1.74, 2)
+j(-1.74, -3.2345)
+j(-1.74, 3.2345)
+j(-1.74, -100)
+j(-1.74, 100)
+j(2, 0)
+j(2, .5)
+j(2, -.5)
+j(2, 1)
+j(2, -1)
+j(2, 1.5)
+j(2, -1.5)
+j(2, 1.74)
+j(2, -1.74)
+j(2, 2)
+j(2, -2)
+j(2, 3.2345)
+j(2, -3.2345)
+j(2, 100)
+j(2, -100)
+j(2, -.5)
+j(2, .5)
+j(2, -1)
+j(2, 1)
+j(2, -1.5)
+j(2, 1.5)
+j(2, -1.74)
+j(2, 1.74)
+j(2, -2)
+j(2, 2)
+j(2, -3.2345)
+j(2, 3.2345)
+j(2, -100)
+j(2, 100)
+j(-2, 0)
+j(-2, .5)
+j(-2, -.5)
+j(-2, 1)
+j(-2, -1)
+j(-2, 1.5)
+j(-2, -1.5)
+j(-2, 1.74)
+j(-2, -1.74)
+j(-2, 2)
+j(-2, -2)
+j(-2, 3.2345)
+j(-2, -3.2345)
+j(-2, 100)
+j(-2, -100)
+j(-2, -.5)
+j(-2, .5)
+j(-2, -1)
+j(-2, 1)
+j(-2, -1.5)
+j(-2, 1.5)
+j(-2, -1.74)
+j(-2, 1.74)
+j(-2, -2)
+j(-2, 2)
+j(-2, -3.2345)
+j(-2, 3.2345)
+j(-2, -100)
+j(-2, 100)
+j(3.2345, 0)
+j(3.2345, .5)
+j(3.2345, -.5)
+j(3.2345, 1)
+j(3.2345, -1)
+j(3.2345, 1.5)
+j(3.2345, -1.5)
+j(3.2345, 1.74)
+j(3.2345, -1.74)
+j(3.2345, 2)
+j(3.2345, -2)
+j(3.2345, 3.2345)
+j(3.2345, -3.2345)
+j(3.2345, 100)
+j(3.2345, -100)
+j(3.2345, -.5)
+j(3.2345, .5)
+j(3.2345, -1)
+j(3.2345, 1)
+j(3.2345, -1.5)
+j(3.2345, 1.5)
+j(3.2345, -1.74)
+j(3.2345, 1.74)
+j(3.2345, -2)
+j(3.2345, 2)
+j(3.2345, -3.2345)
+j(3.2345, 3.2345)
+j(3.2345, -100)
+j(3.2345, 100)
+j(-3.2345, 0)
+j(-3.2345, .5)
+j(-3.2345, -.5)
+j(-3.2345, 1)
+j(-3.2345, -1)
+j(-3.2345, 1.5)
+j(-3.2345, -1.5)
+j(-3.2345, 1.74)
+j(-3.2345, -1.74)
+j(-3.2345, 2)
+j(-3.2345, -2)
+j(-3.2345, 3.2345)
+j(-3.2345, -3.2345)
+j(-3.2345, 100)
+j(-3.2345, -100)
+j(-3.2345, -.5)
+j(-3.2345, .5)
+j(-3.2345, -1)
+j(-3.2345, 1)
+j(-3.2345, -1.5)
+j(-3.2345, 1.5)
+j(-3.2345, -1.74)
+j(-3.2345, 1.74)
+j(-3.2345, -2)
+j(-3.2345, 2)
+j(-3.2345, -3.2345)
+j(-3.2345, 3.2345)
+j(-3.2345, -100)
+j(-3.2345, 100)
+j(100, 0)
+j(100, .5)
+j(100, -.5)
+j(100, 1)
+j(100, -1)
+j(100, 1.5)
+j(100, -1.5)
+j(100, 1.74)
+j(100, -1.74)
+j(100, 2)
+j(100, -2)
+j(100, 3.2345)
+j(100, -3.2345)
+j(100, 100)
+j(100, -100)
+j(100, -.5)
+j(100, .5)
+j(100, -1)
+j(100, 1)
+j(100, -1.5)
+j(100, 1.5)
+j(100, -1.74)
+j(100, 1.74)
+j(100, -2)
+j(100, 2)
+j(100, -3.2345)
+j(100, 3.2345)
+j(100, -100)
+j(100, 100)
+j(-100, 0)
+j(-100, .5)
+j(-100, -.5)
+j(-100, 1)
+j(-100, -1)
+j(-100, 1.5)
+j(-100, -1.5)
+j(-100, 1.74)
+j(-100, -1.74)
+j(-100, 2)
+j(-100, -2)
+j(-100, 3.2345)
+j(-100, -3.2345)
+j(-100, 100)
+j(-100, -100)
+j(-100, -.5)
+j(-100, .5)
+j(-100, -1)
+j(-100, 1)
+j(-100, -1.5)
+j(-100, 1.5)
+j(-100, -1.74)
+j(-100, 1.74)
+j(-100, -2)
+j(-100, 2)
+j(-100, -3.2345)
+j(-100, 3.2345)
+j(-100, -100)
+j(-100, 100)
+j(-.5, 0)
+j(-.5, .5)
+j(-.5, -.5)
+j(-.5, 1)
+j(-.5, -1)
+j(-.5, 1.5)
+j(-.5, -1.5)
+j(-.5, 1.74)
+j(-.5, -1.74)
+j(-.5, 2)
+j(-.5, -2)
+j(-.5, 3.2345)
+j(-.5, -3.2345)
+j(-.5, 100)
+j(-.5, -100)
+j(-.5, -.5)
+j(-.5, .5)
+j(-.5, -1)
+j(-.5, 1)
+j(-.5, -1.5)
+j(-.5, 1.5)
+j(-.5, -1.74)
+j(-.5, 1.74)
+j(-.5, -2)
+j(-.5, 2)
+j(-.5, -3.2345)
+j(-.5, 3.2345)
+j(-.5, -100)
+j(-.5, 100)
+j(.5, 0)
+j(.5, .5)
+j(.5, -.5)
+j(.5, 1)
+j(.5, -1)
+j(.5, 1.5)
+j(.5, -1.5)
+j(.5, 1.74)
+j(.5, -1.74)
+j(.5, 2)
+j(.5, -2)
+j(.5, 3.2345)
+j(.5, -3.2345)
+j(.5, 100)
+j(.5, -100)
+j(.5, -.5)
+j(.5, .5)
+j(.5, -1)
+j(.5, 1)
+j(.5, -1.5)
+j(.5, 1.5)
+j(.5, -1.74)
+j(.5, 1.74)
+j(.5, -2)
+j(.5, 2)
+j(.5, -3.2345)
+j(.5, 3.2345)
+j(.5, -100)
+j(.5, 100)
+j(-1, 0)
+j(-1, .5)
+j(-1, -.5)
+j(-1, 1)
+j(-1, -1)
+j(-1, 1.5)
+j(-1, -1.5)
+j(-1, 1.74)
+j(-1, -1.74)
+j(-1, 2)
+j(-1, -2)
+j(-1, 3.2345)
+j(-1, -3.2345)
+j(-1, 100)
+j(-1, -100)
+j(-1, -.5)
+j(-1, .5)
+j(-1, -1)
+j(-1, 1)
+j(-1, -1.5)
+j(-1, 1.5)
+j(-1, -1.74)
+j(-1, 1.74)
+j(-1, -2)
+j(-1, 2)
+j(-1, -3.2345)
+j(-1, 3.2345)
+j(-1, -100)
+j(-1, 100)
+j(1, 0)
+j(1, .5)
+j(1, -.5)
+j(1, 1)
+j(1, -1)
+j(1, 1.5)
+j(1, -1.5)
+j(1, 1.74)
+j(1, -1.74)
+j(1, 2)
+j(1, -2)
+j(1, 3.2345)
+j(1, -3.2345)
+j(1, 100)
+j(1, -100)
+j(1, -.5)
+j(1, .5)
+j(1, -1)
+j(1, 1)
+j(1, -1.5)
+j(1, 1.5)
+j(1, -1.74)
+j(1, 1.74)
+j(1, -2)
+j(1, 2)
+j(1, -3.2345)
+j(1, 3.2345)
+j(1, -100)
+j(1, 100)
+j(-1.5, 0)
+j(-1.5, .5)
+j(-1.5, -.5)
+j(-1.5, 1)
+j(-1.5, -1)
+j(-1.5, 1.5)
+j(-1.5, -1.5)
+j(-1.5, 1.74)
+j(-1.5, -1.74)
+j(-1.5, 2)
+j(-1.5, -2)
+j(-1.5, 3.2345)
+j(-1.5, -3.2345)
+j(-1.5, 100)
+j(-1.5, -100)
+j(-1.5, -.5)
+j(-1.5, .5)
+j(-1.5, -1)
+j(-1.5, 1)
+j(-1.5, -1.5)
+j(-1.5, 1.5)
+j(-1.5, -1.74)
+j(-1.5, 1.74)
+j(-1.5, -2)
+j(-1.5, 2)
+j(-1.5, -3.2345)
+j(-1.5, 3.2345)
+j(-1.5, -100)
+j(-1.5, 100)
+j(1.5, 0)
+j(1.5, .5)
+j(1.5, -.5)
+j(1.5, 1)
+j(1.5, -1)
+j(1.5, 1.5)
+j(1.5, -1.5)
+j(1.5, 1.74)
+j(1.5, -1.74)
+j(1.5, 2)
+j(1.5, -2)
+j(1.5, 3.2345)
+j(1.5, -3.2345)
+j(1.5, 100)
+j(1.5, -100)
+j(1.5, -.5)
+j(1.5, .5)
+j(1.5, -1)
+j(1.5, 1)
+j(1.5, -1.5)
+j(1.5, 1.5)
+j(1.5, -1.74)
+j(1.5, 1.74)
+j(1.5, -2)
+j(1.5, 2)
+j(1.5, -3.2345)
+j(1.5, 3.2345)
+j(1.5, -100)
+j(1.5, 100)
+j(-1.74, 0)
+j(-1.74, .5)
+j(-1.74, -.5)
+j(-1.74, 1)
+j(-1.74, -1)
+j(-1.74, 1.5)
+j(-1.74, -1.5)
+j(-1.74, 1.74)
+j(-1.74, -1.74)
+j(-1.74, 2)
+j(-1.74, -2)
+j(-1.74, 3.2345)
+j(-1.74, -3.2345)
+j(-1.74, 100)
+j(-1.74, -100)
+j(-1.74, -.5)
+j(-1.74, .5)
+j(-1.74, -1)
+j(-1.74, 1)
+j(-1.74, -1.5)
+j(-1.74, 1.5)
+j(-1.74, -1.74)
+j(-1.74, 1.74)
+j(-1.74, -2)
+j(-1.74, 2)
+j(-1.74, -3.2345)
+j(-1.74, 3.2345)
+j(-1.74, -100)
+j(-1.74, 100)
+j(1.74, 0)
+j(1.74, .5)
+j(1.74, -.5)
+j(1.74, 1)
+j(1.74, -1)
+j(1.74, 1.5)
+j(1.74, -1.5)
+j(1.74, 1.74)
+j(1.74, -1.74)
+j(1.74, 2)
+j(1.74, -2)
+j(1.74, 3.2345)
+j(1.74, -3.2345)
+j(1.74, 100)
+j(1.74, -100)
+j(1.74, -.5)
+j(1.74, .5)
+j(1.74, -1)
+j(1.74, 1)
+j(1.74, -1.5)
+j(1.74, 1.5)
+j(1.74, -1.74)
+j(1.74, 1.74)
+j(1.74, -2)
+j(1.74, 2)
+j(1.74, -3.2345)
+j(1.74, 3.2345)
+j(1.74, -100)
+j(1.74, 100)
+j(-2, 0)
+j(-2, .5)
+j(-2, -.5)
+j(-2, 1)
+j(-2, -1)
+j(-2, 1.5)
+j(-2, -1.5)
+j(-2, 1.74)
+j(-2, -1.74)
+j(-2, 2)
+j(-2, -2)
+j(-2, 3.2345)
+j(-2, -3.2345)
+j(-2, 100)
+j(-2, -100)
+j(-2, -.5)
+j(-2, .5)
+j(-2, -1)
+j(-2, 1)
+j(-2, -1.5)
+j(-2, 1.5)
+j(-2, -1.74)
+j(-2, 1.74)
+j(-2, -2)
+j(-2, 2)
+j(-2, -3.2345)
+j(-2, 3.2345)
+j(-2, -100)
+j(-2, 100)
+j(2, 0)
+j(2, .5)
+j(2, -.5)
+j(2, 1)
+j(2, -1)
+j(2, 1.5)
+j(2, -1.5)
+j(2, 1.74)
+j(2, -1.74)
+j(2, 2)
+j(2, -2)
+j(2, 3.2345)
+j(2, -3.2345)
+j(2, 100)
+j(2, -100)
+j(2, -.5)
+j(2, .5)
+j(2, -1)
+j(2, 1)
+j(2, -1.5)
+j(2, 1.5)
+j(2, -1.74)
+j(2, 1.74)
+j(2, -2)
+j(2, 2)
+j(2, -3.2345)
+j(2, 3.2345)
+j(2, -100)
+j(2, 100)
+j(-3.2345, 0)
+j(-3.2345, .5)
+j(-3.2345, -.5)
+j(-3.2345, 1)
+j(-3.2345, -1)
+j(-3.2345, 1.5)
+j(-3.2345, -1.5)
+j(-3.2345, 1.74)
+j(-3.2345, -1.74)
+j(-3.2345, 2)
+j(-3.2345, -2)
+j(-3.2345, 3.2345)
+j(-3.2345, -3.2345)
+j(-3.2345, 100)
+j(-3.2345, -100)
+j(-3.2345, -.5)
+j(-3.2345, .5)
+j(-3.2345, -1)
+j(-3.2345, 1)
+j(-3.2345, -1.5)
+j(-3.2345, 1.5)
+j(-3.2345, -1.74)
+j(-3.2345, 1.74)
+j(-3.2345, -2)
+j(-3.2345, 2)
+j(-3.2345, -3.2345)
+j(-3.2345, 3.2345)
+j(-3.2345, -100)
+j(-3.2345, 100)
+j(3.2345, 0)
+j(3.2345, .5)
+j(3.2345, -.5)
+j(3.2345, 1)
+j(3.2345, -1)
+j(3.2345, 1.5)
+j(3.2345, -1.5)
+j(3.2345, 1.74)
+j(3.2345, -1.74)
+j(3.2345, 2)
+j(3.2345, -2)
+j(3.2345, 3.2345)
+j(3.2345, -3.2345)
+j(3.2345, 100)
+j(3.2345, -100)
+j(3.2345, -.5)
+j(3.2345, .5)
+j(3.2345, -1)
+j(3.2345, 1)
+j(3.2345, -1.5)
+j(3.2345, 1.5)
+j(3.2345, -1.74)
+j(3.2345, 1.74)
+j(3.2345, -2)
+j(3.2345, 2)
+j(3.2345, -3.2345)
+j(3.2345, 3.2345)
+j(3.2345, -100)
+j(3.2345, 100)
+j(-100, 0)
+j(-100, .5)
+j(-100, -.5)
+j(-100, 1)
+j(-100, -1)
+j(-100, 1.5)
+j(-100, -1.5)
+j(-100, 1.74)
+j(-100, -1.74)
+j(-100, 2)
+j(-100, -2)
+j(-100, 3.2345)
+j(-100, -3.2345)
+j(-100, 100)
+j(-100, -100)
+j(-100, -.5)
+j(-100, .5)
+j(-100, -1)
+j(-100, 1)
+j(-100, -1.5)
+j(-100, 1.5)
+j(-100, -1.74)
+j(-100, 1.74)
+j(-100, -2)
+j(-100, 2)
+j(-100, -3.2345)
+j(-100, 3.2345)
+j(-100, -100)
+j(-100, 100)
+j(100, 0)
+j(100, .5)
+j(100, -.5)
+j(100, 1)
+j(100, -1)
+j(100, 1.5)
+j(100, -1.5)
+j(100, 1.74)
+j(100, -1.74)
+j(100, 2)
+j(100, -2)
+j(100, 3.2345)
+j(100, -3.2345)
+j(100, 100)
+j(100, -100)
+j(100, -.5)
+j(100, .5)
+j(100, -1)
+j(100, 1)
+j(100, -1.5)
+j(100, 1.5)
+j(100, -1.74)
+j(100, 1.74)
+j(100, -2)
+j(100, 2)
+j(100, -3.2345)
+j(100, 3.2345)
+j(100, -100)
+j(100, 100)
+j(3, 0.75)
+scale = 0; j(40, 0.75)
+halt \ No newline at end of file
diff --git a/testsuite/bc_bessel_results.txt b/testsuite/bc_bessel_results.txt
new file mode 100644
index 000000000..4bbb3c86b
--- /dev/null
+++ b/testsuite/bc_bessel_results.txt
@@ -0,0 +1,843 @@
+1.00000000000000000000
+.93846980724081290422
+.93846980724081290422
+.76519768655796655144
+.76519768655796655144
+.51182767173591812874
+.51182767173591812874
+.37483214773176892693
+.37483214773176892693
+.22389077914123566805
+.22389077914123566805
+-.32896462175888702221
+-.32896462175888702221
+.01998585030422312242
+.01998585030422312242
+.93846980724081290422
+.93846980724081290422
+.76519768655796655144
+.76519768655796655144
+.51182767173591812874
+.51182767173591812874
+.37483214773176892693
+.37483214773176892693
+.22389077914123566805
+.22389077914123566805
+-.32896462175888702221
+-.32896462175888702221
+.01998585030422312242
+.01998585030422312242
+1.00000000000000000000
+.93846980724081290422
+.93846980724081290422
+.76519768655796655144
+.76519768655796655144
+.51182767173591812874
+.51182767173591812874
+.37483214773176892693
+.37483214773176892693
+.22389077914123566805
+.22389077914123566805
+-.32896462175888702221
+-.32896462175888702221
+.01998585030422312242
+.01998585030422312242
+.93846980724081290422
+.93846980724081290422
+.76519768655796655144
+.76519768655796655144
+.51182767173591812874
+.51182767173591812874
+.37483214773176892693
+.37483214773176892693
+.22389077914123566805
+.22389077914123566805
+-.32896462175888702221
+-.32896462175888702221
+.01998585030422312242
+.01998585030422312242
+1.00000000000000000000
+.93846980724081290422
+.93846980724081290422
+.76519768655796655144
+.76519768655796655144
+.51182767173591812874
+.51182767173591812874
+.37483214773176892693
+.37483214773176892693
+.22389077914123566805
+.22389077914123566805
+-.32896462175888702221
+-.32896462175888702221
+.01998585030422312242
+.01998585030422312242
+.93846980724081290422
+.93846980724081290422
+.76519768655796655144
+.76519768655796655144
+.51182767173591812874
+.51182767173591812874
+.37483214773176892693
+.37483214773176892693
+.22389077914123566805
+.22389077914123566805
+-.32896462175888702221
+-.32896462175888702221
+.01998585030422312242
+.01998585030422312242
+0
+.24226845767487388638
+-.24226845767487388638
+.44005058574493351595
+-.44005058574493351595
+.55793650791009964199
+-.55793650791009964199
+.57976044202797131452
+-.57976044202797131452
+.57672480775687338720
+-.57672480775687338720
+.24741588607612652213
+-.24741588607612652213
+-.07714535201411215803
+.07714535201411215803
+-.24226845767487388638
+.24226845767487388638
+-.44005058574493351595
+.44005058574493351595
+-.55793650791009964199
+.55793650791009964199
+-.57976044202797131452
+.57976044202797131452
+-.57672480775687338720
+.57672480775687338720
+-.24741588607612652213
+.24741588607612652213
+.07714535201411215803
+-.07714535201411215803
+0
+-.24226845767487388638
+.24226845767487388638
+-.44005058574493351595
+.44005058574493351595
+-.55793650791009964199
+.55793650791009964199
+-.57976044202797131452
+.57976044202797131452
+-.57672480775687338720
+.57672480775687338720
+-.24741588607612652213
+.24741588607612652213
+.07714535201411215803
+-.07714535201411215803
+.24226845767487388638
+-.24226845767487388638
+.44005058574493351595
+-.44005058574493351595
+.55793650791009964199
+-.55793650791009964199
+.57976044202797131452
+-.57976044202797131452
+.57672480775687338720
+-.57672480775687338720
+.24741588607612652213
+-.24741588607612652213
+-.07714535201411215803
+.07714535201411215803
+0
+.24226845767487388638
+-.24226845767487388638
+.44005058574493351595
+-.44005058574493351595
+.55793650791009964199
+-.55793650791009964199
+.57976044202797131452
+-.57976044202797131452
+.57672480775687338720
+-.57672480775687338720
+.24741588607612652213
+-.24741588607612652213
+-.07714535201411215803
+.07714535201411215803
+-.24226845767487388638
+.24226845767487388638
+-.44005058574493351595
+.44005058574493351595
+-.55793650791009964199
+.55793650791009964199
+-.57976044202797131452
+.57976044202797131452
+-.57672480775687338720
+.57672480775687338720
+-.24741588607612652213
+.24741588607612652213
+.07714535201411215803
+-.07714535201411215803
+0
+-.24226845767487388638
+.24226845767487388638
+-.44005058574493351595
+.44005058574493351595
+-.55793650791009964199
+.55793650791009964199
+-.57976044202797131452
+.57976044202797131452
+-.57672480775687338720
+.57672480775687338720
+-.24741588607612652213
+.24741588607612652213
+.07714535201411215803
+-.07714535201411215803
+.24226845767487388638
+-.24226845767487388638
+.44005058574493351595
+-.44005058574493351595
+.55793650791009964199
+-.55793650791009964199
+.57976044202797131452
+-.57976044202797131452
+.57672480775687338720
+-.57672480775687338720
+.24741588607612652213
+-.24741588607612652213
+-.07714535201411215803
+.07714535201411215803
+0
+.24226845767487388638
+-.24226845767487388638
+.44005058574493351595
+-.44005058574493351595
+.55793650791009964199
+-.55793650791009964199
+.57976044202797131452
+-.57976044202797131452
+.57672480775687338720
+-.57672480775687338720
+.24741588607612652213
+-.24741588607612652213
+-.07714535201411215803
+.07714535201411215803
+-.24226845767487388638
+.24226845767487388638
+-.44005058574493351595
+.44005058574493351595
+-.55793650791009964199
+.55793650791009964199
+-.57976044202797131452
+.57976044202797131452
+-.57672480775687338720
+.57672480775687338720
+-.24741588607612652213
+.24741588607612652213
+.07714535201411215803
+-.07714535201411215803
+0
+-.24226845767487388638
+.24226845767487388638
+-.44005058574493351595
+.44005058574493351595
+-.55793650791009964199
+.55793650791009964199
+-.57976044202797131452
+.57976044202797131452
+-.57672480775687338720
+.57672480775687338720
+-.24741588607612652213
+.24741588607612652213
+.07714535201411215803
+-.07714535201411215803
+.24226845767487388638
+-.24226845767487388638
+.44005058574493351595
+-.44005058574493351595
+.55793650791009964199
+-.55793650791009964199
+.57976044202797131452
+-.57976044202797131452
+.57672480775687338720
+-.57672480775687338720
+.24741588607612652213
+-.24741588607612652213
+-.07714535201411215803
+.07714535201411215803
+0
+.03060402345868264130
+.03060402345868264130
+.11490348493190048046
+.11490348493190048046
+.23208767214421472723
+.23208767214421472723
+.29155916494406017021
+.29155916494406017021
+.35283402861563771915
+.35283402861563771915
+.48195017505993913050
+.48195017505993913050
+-.02152875734450536558
+-.02152875734450536558
+.03060402345868264130
+.03060402345868264130
+.11490348493190048046
+.11490348493190048046
+.23208767214421472723
+.23208767214421472723
+.29155916494406017021
+.29155916494406017021
+.35283402861563771915
+.35283402861563771915
+.48195017505993913050
+.48195017505993913050
+-.02152875734450536558
+-.02152875734450536558
+0
+.03060402345868264130
+.03060402345868264130
+.11490348493190048046
+.11490348493190048046
+.23208767214421472723
+.23208767214421472723
+.29155916494406017021
+.29155916494406017021
+.35283402861563771915
+.35283402861563771915
+.48195017505993913050
+.48195017505993913050
+-.02152875734450536558
+-.02152875734450536558
+.03060402345868264130
+.03060402345868264130
+.11490348493190048046
+.11490348493190048046
+.23208767214421472723
+.23208767214421472723
+.29155916494406017021
+.29155916494406017021
+.35283402861563771915
+.35283402861563771915
+.48195017505993913050
+.48195017505993913050
+-.02152875734450536558
+-.02152875734450536558
+0
+.00256372999458724407
+-.00256372999458724407
+.01956335398266840591
+-.01956335398266840591
+.06096395114113963064
+-.06096395114113963064
+.09049051186641988137
+-.09049051186641988137
+.12894324947440205109
+-.12894324947440205109
+.34859607875298354805
+-.34859607875298354805
+.07628420172033194340
+-.07628420172033194340
+-.00256372999458724407
+.00256372999458724407
+-.01956335398266840591
+.01956335398266840591
+-.06096395114113963064
+.06096395114113963064
+-.09049051186641988137
+.09049051186641988137
+-.12894324947440205109
+.12894324947440205109
+-.34859607875298354805
+.34859607875298354805
+-.07628420172033194340
+.07628420172033194340
+0
+-.00256372999458724407
+.00256372999458724407
+-.01956335398266840591
+.01956335398266840591
+-.06096395114113963064
+.06096395114113963064
+-.09049051186641988137
+.09049051186641988137
+-.12894324947440205109
+.12894324947440205109
+-.34859607875298354805
+.34859607875298354805
+-.07628420172033194340
+.07628420172033194340
+.00256372999458724407
+-.00256372999458724407
+.01956335398266840591
+-.01956335398266840591
+.06096395114113963064
+-.06096395114113963064
+.09049051186641988137
+-.09049051186641988137
+.12894324947440205109
+-.12894324947440205109
+.34859607875298354805
+-.34859607875298354805
+.07628420172033194340
+-.07628420172033194340
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+.09636667329586155967
+.09636667329586155967
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+.09636667329586155967
+.09636667329586155967
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+.09636667329586155967
+.09636667329586155967
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+.09636667329586155967
+.09636667329586155967
+1.00000000000000000000
+.93846980724081290422
+.93846980724081290422
+.76519768655796655144
+.76519768655796655144
+.51182767173591812874
+.51182767173591812874
+.37483214773176892693
+.37483214773176892693
+.22389077914123566805
+.22389077914123566805
+-.32896462175888702221
+-.32896462175888702221
+.01998585030422312242
+.01998585030422312242
+.93846980724081290422
+.93846980724081290422
+.76519768655796655144
+.76519768655796655144
+.51182767173591812874
+.51182767173591812874
+.37483214773176892693
+.37483214773176892693
+.22389077914123566805
+.22389077914123566805
+-.32896462175888702221
+-.32896462175888702221
+.01998585030422312242
+.01998585030422312242
+1.00000000000000000000
+.93846980724081290422
+.93846980724081290422
+.76519768655796655144
+.76519768655796655144
+.51182767173591812874
+.51182767173591812874
+.37483214773176892693
+.37483214773176892693
+.22389077914123566805
+.22389077914123566805
+-.32896462175888702221
+-.32896462175888702221
+.01998585030422312242
+.01998585030422312242
+.93846980724081290422
+.93846980724081290422
+.76519768655796655144
+.76519768655796655144
+.51182767173591812874
+.51182767173591812874
+.37483214773176892693
+.37483214773176892693
+.22389077914123566805
+.22389077914123566805
+-.32896462175888702221
+-.32896462175888702221
+.01998585030422312242
+.01998585030422312242
+0
+-.24226845767487388638
+.24226845767487388638
+-.44005058574493351595
+.44005058574493351595
+-.55793650791009964199
+.55793650791009964199
+-.57976044202797131452
+.57976044202797131452
+-.57672480775687338720
+.57672480775687338720
+-.24741588607612652213
+.24741588607612652213
+.07714535201411215803
+-.07714535201411215803
+.24226845767487388638
+-.24226845767487388638
+.44005058574493351595
+-.44005058574493351595
+.55793650791009964199
+-.55793650791009964199
+.57976044202797131452
+-.57976044202797131452
+.57672480775687338720
+-.57672480775687338720
+.24741588607612652213
+-.24741588607612652213
+-.07714535201411215803
+.07714535201411215803
+0
+.24226845767487388638
+-.24226845767487388638
+.44005058574493351595
+-.44005058574493351595
+.55793650791009964199
+-.55793650791009964199
+.57976044202797131452
+-.57976044202797131452
+.57672480775687338720
+-.57672480775687338720
+.24741588607612652213
+-.24741588607612652213
+-.07714535201411215803
+.07714535201411215803
+-.24226845767487388638
+.24226845767487388638
+-.44005058574493351595
+.44005058574493351595
+-.55793650791009964199
+.55793650791009964199
+-.57976044202797131452
+.57976044202797131452
+-.57672480775687338720
+.57672480775687338720
+-.24741588607612652213
+.24741588607612652213
+.07714535201411215803
+-.07714535201411215803
+0
+-.24226845767487388638
+.24226845767487388638
+-.44005058574493351595
+.44005058574493351595
+-.55793650791009964199
+.55793650791009964199
+-.57976044202797131452
+.57976044202797131452
+-.57672480775687338720
+.57672480775687338720
+-.24741588607612652213
+.24741588607612652213
+.07714535201411215803
+-.07714535201411215803
+.24226845767487388638
+-.24226845767487388638
+.44005058574493351595
+-.44005058574493351595
+.55793650791009964199
+-.55793650791009964199
+.57976044202797131452
+-.57976044202797131452
+.57672480775687338720
+-.57672480775687338720
+.24741588607612652213
+-.24741588607612652213
+-.07714535201411215803
+.07714535201411215803
+0
+.24226845767487388638
+-.24226845767487388638
+.44005058574493351595
+-.44005058574493351595
+.55793650791009964199
+-.55793650791009964199
+.57976044202797131452
+-.57976044202797131452
+.57672480775687338720
+-.57672480775687338720
+.24741588607612652213
+-.24741588607612652213
+-.07714535201411215803
+.07714535201411215803
+-.24226845767487388638
+.24226845767487388638
+-.44005058574493351595
+.44005058574493351595
+-.55793650791009964199
+.55793650791009964199
+-.57976044202797131452
+.57976044202797131452
+-.57672480775687338720
+.57672480775687338720
+-.24741588607612652213
+.24741588607612652213
+.07714535201411215803
+-.07714535201411215803
+0
+-.24226845767487388638
+.24226845767487388638
+-.44005058574493351595
+.44005058574493351595
+-.55793650791009964199
+.55793650791009964199
+-.57976044202797131452
+.57976044202797131452
+-.57672480775687338720
+.57672480775687338720
+-.24741588607612652213
+.24741588607612652213
+.07714535201411215803
+-.07714535201411215803
+.24226845767487388638
+-.24226845767487388638
+.44005058574493351595
+-.44005058574493351595
+.55793650791009964199
+-.55793650791009964199
+.57976044202797131452
+-.57976044202797131452
+.57672480775687338720
+-.57672480775687338720
+.24741588607612652213
+-.24741588607612652213
+-.07714535201411215803
+.07714535201411215803
+0
+.24226845767487388638
+-.24226845767487388638
+.44005058574493351595
+-.44005058574493351595
+.55793650791009964199
+-.55793650791009964199
+.57976044202797131452
+-.57976044202797131452
+.57672480775687338720
+-.57672480775687338720
+.24741588607612652213
+-.24741588607612652213
+-.07714535201411215803
+.07714535201411215803
+-.24226845767487388638
+.24226845767487388638
+-.44005058574493351595
+.44005058574493351595
+-.55793650791009964199
+.55793650791009964199
+-.57976044202797131452
+.57976044202797131452
+-.57672480775687338720
+.57672480775687338720
+-.24741588607612652213
+.24741588607612652213
+.07714535201411215803
+-.07714535201411215803
+0
+.03060402345868264130
+.03060402345868264130
+.11490348493190048046
+.11490348493190048046
+.23208767214421472723
+.23208767214421472723
+.29155916494406017021
+.29155916494406017021
+.35283402861563771915
+.35283402861563771915
+.48195017505993913050
+.48195017505993913050
+-.02152875734450536558
+-.02152875734450536558
+.03060402345868264130
+.03060402345868264130
+.11490348493190048046
+.11490348493190048046
+.23208767214421472723
+.23208767214421472723
+.29155916494406017021
+.29155916494406017021
+.35283402861563771915
+.35283402861563771915
+.48195017505993913050
+.48195017505993913050
+-.02152875734450536558
+-.02152875734450536558
+0
+.03060402345868264130
+.03060402345868264130
+.11490348493190048046
+.11490348493190048046
+.23208767214421472723
+.23208767214421472723
+.29155916494406017021
+.29155916494406017021
+.35283402861563771915
+.35283402861563771915
+.48195017505993913050
+.48195017505993913050
+-.02152875734450536558
+-.02152875734450536558
+.03060402345868264130
+.03060402345868264130
+.11490348493190048046
+.11490348493190048046
+.23208767214421472723
+.23208767214421472723
+.29155916494406017021
+.29155916494406017021
+.35283402861563771915
+.35283402861563771915
+.48195017505993913050
+.48195017505993913050
+-.02152875734450536558
+-.02152875734450536558
+0
+-.00256372999458724407
+.00256372999458724407
+-.01956335398266840591
+.01956335398266840591
+-.06096395114113963064
+.06096395114113963064
+-.09049051186641988137
+.09049051186641988137
+-.12894324947440205109
+.12894324947440205109
+-.34859607875298354805
+.34859607875298354805
+-.07628420172033194340
+.07628420172033194340
+.00256372999458724407
+-.00256372999458724407
+.01956335398266840591
+-.01956335398266840591
+.06096395114113963064
+-.06096395114113963064
+.09049051186641988137
+-.09049051186641988137
+.12894324947440205109
+-.12894324947440205109
+.34859607875298354805
+-.34859607875298354805
+.07628420172033194340
+-.07628420172033194340
+0
+.00256372999458724407
+-.00256372999458724407
+.01956335398266840591
+-.01956335398266840591
+.06096395114113963064
+-.06096395114113963064
+.09049051186641988137
+-.09049051186641988137
+.12894324947440205109
+-.12894324947440205109
+.34859607875298354805
+-.34859607875298354805
+.07628420172033194340
+-.07628420172033194340
+-.00256372999458724407
+.00256372999458724407
+-.01956335398266840591
+.01956335398266840591
+-.06096395114113963064
+.06096395114113963064
+-.09049051186641988137
+.09049051186641988137
+-.12894324947440205109
+.12894324947440205109
+-.34859607875298354805
+.34859607875298354805
+-.07628420172033194340
+.07628420172033194340
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+.09636667329586155967
+.09636667329586155967
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+.09636667329586155967
+.09636667329586155967
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+.09636667329586155967
+.09636667329586155967
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+.09636667329586155967
+.09636667329586155967
+.00848438342327410884
+0
diff --git a/testsuite/bc_boolean.bc b/testsuite/bc_boolean.bc
new file mode 100644
index 000000000..021afc5f9
--- /dev/null
+++ b/testsuite/bc_boolean.bc
@@ -0,0 +1,181 @@
+!0
+!1
+!(-129)
+4 && 5
+4 && 0
+0 && 5
+4 && 5 && 7
+4 && 0 && 7
+0 && 5 && 7
+4 && 5 && 0
+0 && 0 && 7
+4 && 0 && 0
+0 && 5 && 0
+!4 && 5
+!4 && 0
+!0 && 5
+4 && !5
+4 && !0
+0 && !5
+!4 && 5 && 7
+!4 && 0 && 7
+!0 && 5 && 7
+!4 && 5 && 0
+!0 && 0 && 7
+!4 && 0 && 0
+!0 && 5 && 0
+4 && !5 && 7
+4 && !0 && 7
+0 && !5 && 7
+4 && !5 && 0
+0 && !0 && 7
+4 && !0 && 0
+0 && !5 && 0
+4 && 5 && !7
+4 && 0 && !7
+0 && 5 && !7
+4 && 5 && !0
+0 && 0 && !7
+4 && 0 && !0
+0 && 5 && !0
+!4 && !5 && 7
+!4 && !0 && 7
+!0 && !5 && 7
+!4 && !5 && 0
+!0 && !0 && 7
+!4 && !0 && 0
+!0 && !5 && 0
+!4 && 5 && !7
+!4 && 0 && !7
+!0 && 5 && !7
+!4 && 5 && !0
+!0 && 0 && !7
+!4 && 0 && !0
+!0 && 5 && !0
+4 && !5 && !7
+4 && !0 && !7
+0 && !5 && !7
+4 && !5 && !0
+0 && !0 && !7
+4 && !0 && !0
+0 && !5 && !0
+!4 && !5 && !7
+!4 && !0 && !7
+!0 && !5 && !7
+!4 && !5 && !0
+!0 && !0 && !7
+!4 && !0 && !0
+!0 && !5 && !0
+3 < 4 && 7
+3 && 4 >= 4
+3 > 4 && 7
+3 && 4 >= 5
+3 < 4 && 0
+0 && 4 >= 4
+3 > 4 && 0
+0 && 4 >= 5
+3 > 4 && 0
+0 && 4 < 4
+3 >= 4 && 0
+0 && 4 >= 5
+3 < 4 && 7
+3 && 4 >= 4
+3 > 4 && 7 > 4
+3 >= 2 && 4 >= 5
+3 < 4 && 0 > -1
+4 < 3 && 4 >= 4
+3 > 4 && 3 == 3
+3 != 3 && 4 >= 5
+3 > 4 && 0 > 1
+0 >= 0 && 4 < 4
+3 >= 4 && 0 >= 1
+0 <= -1 && 4 >= 5
+4 || 5
+4 || 0
+0 || 5
+4 || 5 || 7
+4 || 0 || 7
+0 || 5 || 7
+4 || 5 || 0
+0 || 0 || 7
+4 || 0 || 0
+0 || 5 || 0
+!4 || 5
+!4 || 0
+!0 || 5
+4 || !5
+4 || !0
+0 || !5
+!4 || 5 || 7
+!4 || 0 || 7
+!0 || 5 || 7
+!4 || 5 || 0
+!0 || 0 || 7
+!4 || 0 || 0
+!0 || 5 || 0
+4 || !5 || 7
+4 || !0 || 7
+0 || !5 || 7
+4 || !5 || 0
+0 || !0 || 7
+4 || !0 || 0
+0 || !5 || 0
+4 || 5 || !7
+4 || 0 || !7
+0 || 5 || !7
+4 || 5 || !0
+0 || 0 || !7
+4 || 0 || !0
+0 || 5 || !0
+!4 || !5 || 7
+!4 || !0 || 7
+!0 || !5 || 7
+!4 || !5 || 0
+!0 || !0 || 7
+!4 || !0 || 0
+!0 || !5 || 0
+!4 || 5 || !7
+!4 || 0 || !7
+!0 || 5 || !7
+!4 || 5 || !0
+!0 || 0 || !7
+!4 || 0 || !0
+!0 || 5 || !0
+4 || !5 || !7
+4 || !0 || !7
+0 || !5 || !7
+4 || !5 || !0
+0 || !0 || !7
+4 || !0 || !0
+0 || !5 || !0
+!4 || !5 || !7
+!4 || !0 || !7
+!0 || !5 || !7
+!4 || !5 || !0
+!0 || !0 || !7
+!4 || !0 || !0
+!0 || !5 || !0
+3 < 4 || 7
+3 || 4 >= 4
+3 > 4 || 7
+3 || 4 >= 5
+3 < 4 || 0
+0 || 4 >= 4
+3 > 4 || 0
+0 || 4 >= 5
+3 > 4 || 0
+0 || 4 < 4
+3 >= 4 || 0
+0 || 4 >= 5
+3 < 4 || 7
+3 || 4 >= 4
+3 > 4 || 7 > 4
+3 >= 2 || 4 >= 5
+3 < 4 || 0 > -1
+4 < 3 || 4 >= 4
+3 > 4 || 3 == 3
+3 != 3 || 4 >= 5
+3 > 4 || 0 > 1
+0 >= 0 || 4 < 4
+3 >= 4 || 0 >= 1
+0 <= -1 || 4 >= 5
diff --git a/testsuite/bc_boolean_results.txt b/testsuite/bc_boolean_results.txt
new file mode 100644
index 000000000..ea59389c0
--- /dev/null
+++ b/testsuite/bc_boolean_results.txt
@@ -0,0 +1,181 @@
+1
+0
+0
+1
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+1
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+0
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+0
+1
+1
+1
+1
+0
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+0
+0
+0
+0
+0
+0
+1
+1
+1
+1
+1
+1
+1
+0
+0
+1
+0
+0
diff --git a/testsuite/bc_cosine.bc b/testsuite/bc_cosine.bc
new file mode 100644
index 000000000..9e67df4c6
--- /dev/null
+++ b/testsuite/bc_cosine.bc
@@ -0,0 +1,44 @@
+scale = 25
+p = 4 * a(1)
+scale = 20
+c(0)
+c(0.5)
+c(1)
+c(2)
+c(3)
+c(-0.5)
+c(-1)
+c(-2)
+c(-3)
+c(p / 7)
+c(-p / 7)
+c(p / 4)
+c(-p / 4)
+c(p / 3)
+c(-p / 3)
+c(p / 2)
+c(-p / 2)
+c(3 * p / 4)
+c(3 * -p / 4)
+c(p)
+c(-p)
+c(3 * p / 2)
+c(3 * -p / 2)
+c(7 * p / 4)
+c(7 * -p / 4)
+c(13 * p / 4)
+c(13 * -p / 4)
+c(2 * p)
+c(2 * -p)
+c(131231)
+c(-131231)
+c(859799894.3562378245)
+c(859799894.3562378245)
+c(4307371)
+c(3522556.3323810191)
+c(44961070)
+c(6918619.1574479809)
+c(190836996.2180244164)
+c(34934)
+c(2483599)
+c(13720376)
diff --git a/testsuite/bc_cosine_results.txt b/testsuite/bc_cosine_results.txt
new file mode 100644
index 000000000..43d640f00
--- /dev/null
+++ b/testsuite/bc_cosine_results.txt
@@ -0,0 +1,41 @@
+1.00000000000000000000
+.87758256189037271611
+.54030230586813971740
+-.41614683654714238699
+-.98999249660044545727
+.87758256189037271611
+.54030230586813971740
+-.41614683654714238699
+-.98999249660044545727
+.90096886790241912623
+.90096886790241912623
+.70710678118654752440
+.70710678118654752440
+.50000000000000000000
+.50000000000000000000
+0
+0
+-.70710678118654752439
+-.70710678118654752439
+-1.00000000000000000000
+-1.00000000000000000000
+0
+0
+.70710678118654752439
+.70710678118654752439
+-.70710678118654752440
+-.70710678118654752440
+1.00000000000000000000
+1.00000000000000000000
+.92427123447397657316
+.92427123447397657316
+-.04198856352825241211
+-.04198856352825241211
+-.75581969921220636368
+-.01644924448939844182
+-.97280717522127222547
+-.92573947460230585966
+-.14343824233852988038
+.87259414746802343203
+.93542606623067050616
+-.52795540572178251550
diff --git a/testsuite/bc_decimal.bc b/testsuite/bc_decimal.bc
new file mode 100644
index 000000000..9b1788c67
--- /dev/null
+++ b/testsuite/bc_decimal.bc
@@ -0,0 +1,36 @@
+0
+0.0
+.00000
+000000000000000000000000.00000000000000000000000
+000000000000000000000000000135482346782356
+000000000000000000000000002
+1
+11
+123
+7505
+1023468723275435238491972521917846
+4343472432431705867392073517038270398027352709027389273920739037937960379637893607893607893670530278200795207952702873892786172916728961783907893607418973587857386079679267926737520730925372983782793652793
+-1
+-203
+-57
+-18586
+-31378682943772818461924738352952347258
+-823945628745673589495067238723986520375698237620834674509627345273096287563846592384526349872634895763257893467523987578690283762897568459072348758071071087813501875908127359018715023841710239872301387278
+.123521346523546
+0.1245923756273856
+-.1024678456387
+-0.8735863475634587
+4.0
+-6.0
+234237468293576.000000000000000000000000000000
+23987623568943567.00000000000000000005677834650000000000000
+23856934568940675.000000000000000435676782300000000000000456784
+77567648698496.000000000000000000587674750000000000458563800000000000000
+2348672354968723.2374823546000000000003256987394502346892435623870000000034578
+-2354768.000000000000000000000000000000000000
+-96739874567.000000000347683456
+-3764568345.000000000004573845000000347683460
+-356784356.934568495770004586495678300000000
+74325437345273852773827101738273127312738521733017537073520735207307570358738257390761276072160719802671980267018728630178.7082681027680521760217867841276127681270867827821768173178207830710978017738178678012767377058785378278207385237085237803278203782037237582795870
+-756752732785273851273728537852738257837283678965738527385272983678372867327835672967385278372637862738627836279863782673862783670.71738178361738718367186378610738617836781603760178367018603760178107735278372832783728367826738627836278378260736270367362073867097307925
+9812734012837410982345719208345712908357412903587192048571920458712.23957182459817249058172945781
diff --git a/testsuite/bc_decimal_results.txt b/testsuite/bc_decimal_results.txt
new file mode 100644
index 000000000..275d431c6
--- /dev/null
+++ b/testsuite/bc_decimal_results.txt
@@ -0,0 +1,51 @@
+0
+0
+0
+0
+135482346782356
+2
+1
+11
+123
+7505
+1023468723275435238491972521917846
+43434724324317058673920735170382703980273527090273892739207390379379\
+60379637893607893607893670530278200795207952702873892786172916728961\
+78390789360741897358785738607967926792673752073092537298378279365279\
+3
+-1
+-203
+-57
+-18586
+-31378682943772818461924738352952347258
+-8239456287456735894950672387239865203756982376208346745096273452730\
+96287563846592384526349872634895763257893467523987578690283762897568\
+45907234875807107108781350187590812735901871502384171023987230138727\
+8
+.123521346523546
+.1245923756273856
+-.1024678456387
+-.8735863475634587
+4.0
+-6.0
+234237468293576.000000000000000000000000000000
+23987623568943567.00000000000000000005677834650000000000000
+23856934568940675.000000000000000435676782300000000000000456784
+77567648698496.00000000000000000058767475000000000045856380000000000\
+0000
+2348672354968723.237482354600000000000325698739450234689243562387000\
+0000034578
+-2354768.000000000000000000000000000000000000
+-96739874567.000000000347683456
+-3764568345.000000000004573845000000347683460
+-356784356.934568495770004586495678300000000
+74325437345273852773827101738273127312738521733017537073520735207307\
+570358738257390761276072160719802671980267018728630178.7082681027680\
+52176021786784127612768127086782782176817317820783071097801773817867\
+8012767377058785378278207385237085237803278203782037237582795870
+-7567527327852738512737285378527382578372836789657385273852729836783\
+72867327835672967385278372637862738627836279863782673862783670.71738\
+17836173871836718637861073861783678160376017836701860376017810773527\
+8372832783728367826738627836278378260736270367362073867097307925
+9812734012837410982345719208345712908357412903587192048571920458712.\
+23957182459817249058172945781
diff --git a/testsuite/bc_divide.bc b/testsuite/bc_divide.bc
new file mode 100644
index 000000000..4d0caddc9
--- /dev/null
+++ b/testsuite/bc_divide.bc
@@ -0,0 +1,31 @@
+0 / 1
+0 / 321566
+0 / 0.3984567238456
+1 / 1
+1 / 1287469297356
+1 / 0.2395672438567234
+1 / 237586239856.0293596728392360
+1249687284356 / 3027949207835207
+378617298617396719 / 35748521
+9348576237845624358 / 0.9857829375461
+35768293846193284 / 2374568947.045762839567823
+-78987234567812345 / 876542837618936
+-356789237555535468 / 0.3375273860984786903
+-5203475364850390 / 435742903748307.70869378534043296404530458
+-0.37861723347576903 / 7385770896
+-0.399454682043962 / 0.34824389304
+-0.6920414523873204 / 356489645223.76076045304879030
+-35872917389671.7573280963748 / 73924708
+-78375896314.4836709876983 / 0.78356798637817
+-2374123896417.143789621437581 / 347821469423789.1473856783960
+-896729350238549726 / -34976289345762
+-2374568293458762348596 / -0.8792370647234987679
+-237584692306721845726038 / -21783910782374529637.978102738746189024761
+-0.23457980123576298375682 / -1375486293874612
+-0.173897061862478951264 / -0.8179327486017634987516298745
+-0.9186739823576829347586 / -0.235678293458756239846
+-0.9375896183746982374568 / -13784962873546.0928729395476283745
+-2930754618923467.12323745862937465 / -734869238465
+-23745861923467.874675129834675 / -0.23542357869124756
+-3878923750692883.7238596702834756902 / -7384192674957215364986723.9738461923487621983
+1 / 0.00000000000000000000000000000000000000000002346728372937352457354204563027
diff --git a/testsuite/bc_divide_results.txt b/testsuite/bc_divide_results.txt
new file mode 100644
index 000000000..c19f2f9b0
--- /dev/null
+++ b/testsuite/bc_divide_results.txt
@@ -0,0 +1,31 @@
+0
+0
+0
+1.00000000000000000000
+.00000000000077671755
+4.17419336592637110778
+.00000000000420899796
+.00041271738677857404
+10591131829.40901859967857131767
+9483402361494453751.52388015648196297248
+15063068.13735316451497043884
+-90.11223545260531110575
+-1057067521778623447.45138528213564485251
+-11.94161814246320631346
+-.00000000005126306228
+-1.14705437777218917343
+-.00000000000194126663
+-485262.88923145638029569727
+-100024372711.74763635544535424582
+-.00682569681609989277
+25638.20711150436682153521
+2700714504347599627864.24626421085374010264
+10906.42973524078145692731
+.00000000000000017054
+.21260557443109085166
+3.89799997647407910677
+.00000000000006801538
+3988.13076601933678578945
+100864416620775.31076855630746548983
+.00000000052530099381
+42612515855353136519261264261472677699404182.78776061098893912189
diff --git a/testsuite/bc_exponent.bc b/testsuite/bc_exponent.bc
new file mode 100644
index 000000000..40bcf3c5a
--- /dev/null
+++ b/testsuite/bc_exponent.bc
@@ -0,0 +1,22 @@
+e(0)
+e(0.5)
+e(1)
+e(1.5)
+e(1.74)
+e(2)
+e(3.2345)
+e(5.283957)
+e(13.23857)
+e(100)
+e(283.238957)
+e(-0.5)
+e(-1)
+e(-1.5)
+e(-1.74)
+e(-2)
+e(-3.2345)
+e(-5.283957)
+e(-13.23857)
+e(-100)
+e(-283.238957)
+e(142.749502399)
diff --git a/testsuite/bc_exponent_results.txt b/testsuite/bc_exponent_results.txt
new file mode 100644
index 000000000..a1f1fe2b4
--- /dev/null
+++ b/testsuite/bc_exponent_results.txt
@@ -0,0 +1,25 @@
+1.00000000000000000000
+1.64872127070012814684
+2.71828182845904523536
+4.48168907033806482260
+5.69734342267199101193
+7.38905609893065022723
+25.39367176822616278859
+197.14845034328553587817
+561613.96621445383501864766
+26881171418161354484126255515800135873611118.77374192241519160861
+10212124131159922810249757193864245307850725332411569566443792548720\
+75182918653384240389953781407569563117008113027037939783.70141667971\
+570827872
+.60653065971263342360
+.36787944117144232159
+.22313016014842982893
+.17552040061699687169
+.13533528323661269189
+.03937988996342191888
+.00507231985977442865
+.00000178058250000525
+0
+0
+98928445824097165243611240348236907682258759298273030827411201.25833\
+645622510213538
diff --git a/testsuite/bc_large.tar.xz b/testsuite/bc_large.tar.xz
new file mode 100644
index 000000000..b2e358a79
--- /dev/null
+++ b/testsuite/bc_large.tar.xz
Binary files differ
diff --git a/testsuite/bc_log.bc b/testsuite/bc_log.bc
new file mode 100644
index 000000000..54115e380
--- /dev/null
+++ b/testsuite/bc_log.bc
@@ -0,0 +1,22 @@
+l(0)
+l(0.5)
+l(1)
+l(1.5)
+l(1.74)
+l(2)
+l(3.2345)
+l(5.283957)
+l(13.23857)
+l(100)
+l(283.238957)
+l(-0.5)
+l(-1)
+l(-1.5)
+l(-1.74)
+l(-2)
+l(-3.2345)
+l(-5.283957)
+l(-13.23857)
+l(-100)
+l(-283.238957)
+l(10430710.3325472917)
diff --git a/testsuite/bc_log_results.txt b/testsuite/bc_log_results.txt
new file mode 100644
index 000000000..ce840a0d9
--- /dev/null
+++ b/testsuite/bc_log_results.txt
@@ -0,0 +1,22 @@
+-99999999999999999999.00000000000000000000
+-.69314718055994530941
+0
+.40546510810816438197
+.55388511322643765995
+.69314718055994530941
+1.17387435650190306676
+1.66467524885255369652
+2.58313453863349348434
+4.60517018598809136803
+5.64629091238730017971
+-99999999999999999999.00000000000000000000
+-99999999999999999999.00000000000000000000
+-99999999999999999999.00000000000000000000
+-99999999999999999999.00000000000000000000
+-99999999999999999999.00000000000000000000
+-99999999999999999999.00000000000000000000
+-99999999999999999999.00000000000000000000
+-99999999999999999999.00000000000000000000
+-99999999999999999999.00000000000000000000
+-99999999999999999999.00000000000000000000
+16.16026492940839137014
diff --git a/testsuite/bc_misc.bc b/testsuite/bc_misc.bc
new file mode 100644
index 000000000..571f4a87e
--- /dev/null
+++ b/testsuite/bc_misc.bc
@@ -0,0 +1,13 @@
+4.1*1.-13^ - 74 - 1284597623841*1.-13^ - 757
+4.1*1.\
+-1\
+3^ - 74 - 1284597623841*1.\
+-1\
+3^ - 757
+obase = 9
+4.1*1.-13^ - 74 - 1284597623841*1.-13^ - 757
+4.1*1.\
+-1\
+3^ - 74 - 1284597623841*1.\
+-1\
+3^ - 757
diff --git a/testsuite/bc_misc1.bc b/testsuite/bc_misc1.bc
new file mode 100644
index 000000000..7e9d96604
--- /dev/null
+++ b/testsuite/bc_misc1.bc
@@ -0,0 +1,76 @@
+define x(x) {
+ return(x)
+}
+define y() {
+ return;
+}
+define z() {
+ return ();
+}
+scale = 0
+x=2
+x[0]=3
+x
+x[0]
+scale
+ibase
+obase
+x ( 7 )
+x + x( 8 )
+x - x[0]
+321 * x
+2 ^ x[0]
+x++
+--x
+x += 9
+x
+length(2381)
+sqrt(9)
+scale(238.1)
+x=2
+x[0]=3
+(x)
+(x[0])
+(scale)
+(ibase)
+(obase)
+(x ( 7 ))
+(x + x( 8 ))
+(x - x[0])
+(321 * x)
+(2 ^ x[0])
+(x++)
+(--x)
+(x += 9)
+(length(2381))
+(sqrt(9))
+(scale(238.1))
+(scale = 0)
+(x = 10)
+(x += 100)
+(x -= 10)
+(x *= 10)
+(x /= 100)
+(x ^= 10)
+(x = sqrt(x))
+(x[1 - 1])
+x[(1 - 1)]
+2 + \
+3
+++ibase
+--ibase
+++obase
+--obase
+++last
+--last
+last
+last = 100
+last
+. = 150
+.
+++scale
+--scale
+y()
+z()
+2 + /*
+*/3
diff --git a/testsuite/bc_misc1_results.txt b/testsuite/bc_misc1_results.txt
new file mode 100644
index 000000000..a9c278069
--- /dev/null
+++ b/testsuite/bc_misc1_results.txt
@@ -0,0 +1,57 @@
+2
+3
+0
+10
+10
+7
+10
+-1
+642
+8
+2
+2
+11
+4
+3
+1
+2
+3
+0
+10
+10
+7
+10
+-1
+642
+8
+2
+2
+11
+4
+3
+1
+0
+10
+110
+100
+1000
+10
+10000000000
+100000
+3
+3
+5
+11
+10
+10
+10
+11
+10
+10
+100
+150
+1
+0
+0
+0
+5
diff --git a/testsuite/bc_misc2.bc b/testsuite/bc_misc2.bc
new file mode 100644
index 000000000..f5a6a6b13
--- /dev/null
+++ b/testsuite/bc_misc2.bc
@@ -0,0 +1,45 @@
+define x() {
+"x"
+return ( 1 )
+}
+define y() {
+"y"
+return (2)
+}
+define z() {
+"z"
+return (3)
+}
+
+if ( x() == y() ) {1}
+1
+if ( x() <= y() ) {2}
+if ( y() >= x() ) {3}
+if ( x() != y() ) {4}
+if ( x() < y() ) {5}
+if ( y() > x() ) {6}
+
+if ( x() == z() ) {11}
+11
+if ( x() <= z() ) {12}
+if ( z() >= x() ) {13}
+if ( x() != z() ) {14}
+if ( x() < z() ) {15}
+if ( z() > x() ) {16}
+
+x = -10
+while (x <= 0) {
+ x
+ if (x == -5) break;
+ x += 1
+}
+
+define u() {
+ auto a[];
+ return a[0]
+}
+
+u()
+
+if (x == -4) x
+else x - 4
diff --git a/testsuite/bc_misc2_results.txt b/testsuite/bc_misc2_results.txt
new file mode 100644
index 000000000..022ca8728
--- /dev/null
+++ b/testsuite/bc_misc2_results.txt
@@ -0,0 +1,20 @@
+xy1
+xy2
+yx3
+xy4
+xy5
+yx6
+xz11
+xz12
+zx13
+xz14
+xz15
+zx16
+-10
+-9
+-8
+-7
+-6
+-5
+0
+-9
diff --git a/testsuite/bc_misc_results.txt b/testsuite/bc_misc_results.txt
new file mode 100644
index 000000000..e2db76e0e
--- /dev/null
+++ b/testsuite/bc_misc_results.txt
@@ -0,0 +1,4 @@
+-1284597623836.9
+-1284597623836.9
+-4483684050181.80
+-4483684050181.80
diff --git a/testsuite/bc_modulus.bc b/testsuite/bc_modulus.bc
new file mode 100644
index 000000000..e2656a6e9
--- /dev/null
+++ b/testsuite/bc_modulus.bc
@@ -0,0 +1,70 @@
+1 % 1
+2 % 1
+16 % 4
+15 % 4
+17 % 4
+2389473 % 5
+39240687239 % 1
+346728934 % 23958
+3496723859067234 % 298375462837546928347623059375486
+-1 % 1
+-2 % 1
+-47589634875689345 % 37869235
+-1274852934765 % 2387628935486273546
+-6324758963 % 237854962
+1 % -1
+2 % -1
+2 % -2
+2 % -3
+16 % 5
+15 % 5
+14 % 5
+89237423 % -237856923854
+123647238946 % -12467
+-1 % -1
+-2 % -1
+-2 % -2
+-2 % -3
+-13 % -7
+-14 % -7
+-15 % -7
+-12784956 % -32746
+-127849612 % -23712347682193
+1 % 0.2395672438567234
+scale = 0
+1 % 1
+2 % 1
+16 % 4
+15 % 4
+17 % 4
+2389473 % 5
+39240687239 % 1
+346728934 % 23958
+3496723859067234 % 298375462837546928347623059375486
+-1 % 1
+-2 % 1
+-47589634875689345 % 37869235
+-1274852934765 % 2387628935486273546
+-6324758963 % 237854962
+1 % -1
+2 % -1
+2 % -2
+2 % -3
+16 % 5
+15 % 5
+14 % 5
+89237423 % -237856923854
+123647238946 % -12467
+-1 % -1
+-2 % -1
+-2 % -2
+-2 % -3
+-13 % -7
+-14 % -7
+-15 % -7
+-12784956 % -32746
+-127849612 % -23712347682193
+-3191280681 % 641165986
+scale = 0; -899510228 % -2448300078.40314
+scale = 0; -7424863 % -207.2609738667
+scale = 0; 3769798918 % 0.6
diff --git a/testsuite/bc_modulus_results.txt b/testsuite/bc_modulus_results.txt
new file mode 100644
index 000000000..e85145be7
--- /dev/null
+++ b/testsuite/bc_modulus_results.txt
@@ -0,0 +1,69 @@
+0
+0
+0
+0
+0
+0
+0
+.00000000000000002026
+2747189239559.46904933397471305894
+0
+0
+-.00000000000011057855
+-.00076922992566770712
+-.00000000000050364144
+0
+0
+0
+.00000000000000000002
+0
+0
+0
+.00000000070585524350
+.00000000000000002898
+0
+0
+0
+-.00000000000000000002
+-.00000000000000000005
+0
+-.00000000000000000002
+-.00000000000000011722
+-.00000002640923745817
+.000000000000000000000404744340951948
+0
+0
+0
+3
+1
+3
+0
+8758
+3496723859067234
+0
+0
+-8236960
+-1274852934765
+-140529951
+0
+0
+0
+2
+1
+0
+4
+89237423
+6692
+0
+0
+0
+-2
+-6
+0
+-1
+-14016
+-127849612
+-626616737
+-899510228.00000
+-153.1331732059
+.4
diff --git a/testsuite/bc_multiply.bc b/testsuite/bc_multiply.bc
new file mode 100644
index 000000000..8d5aa36d5
--- /dev/null
+++ b/testsuite/bc_multiply.bc
@@ -0,0 +1,42 @@
+0 * 0
+0.000 * 0
+1 * 0
+0 * 1
+0 * 2498752389672835476
+873246913745129084576134 * 0
+1 * 472638590273489273456
+12374861230476103672835496 * 1
+1 * 1
+2 * 1
+1 * 2
+2 * 2
+3 * 14
+17 * 8
+1892467513846753 * 1872439821374591038746
+328962735862.2973546835638947635 * 1728465791348762356
+38745962374538.387427384672934867234 * 0.1932476528394672837568923754
+9878894576289457634856.2738627161689017387608947567654 * 37842939768237596237854203.29874372139852739126739621793162
+-1 * 1
+-1 * 2
+78893457 * -34876238956
+235678324957634 * -0.2349578349672389576
+-12849567821934 * 12738462937681
+1274861293467.927843682937462 * -28935678239
+2936077239872.12937462836 * -0.012842357682435762
+2387692387566.2378569237546 * -272189345628.123875629835876
+0.012348629356782835962 * -23487692356
+0.4768349567348675934 * -0.23756834576934857638495
+0.98748395367485962735486 * -4675839462354867.376834956738456
+-321784627934586 * -235762378596
+-32578623567892356 * -0.32567384579638456
+-35768232346876 * -2348672935602387620.28375682349576237856
+-0.2356728394765234 * -238759624356978
+-0.2345768212346780 * -0.235768124697074385948943532045
+-0.370873860736785306278630 * -7835678398607.7086378076867096270
+-78365713707.7089637863786730 * -738580798679306780
+-73867038956790490258249 * -0.7379862716391723672803679
+-378621971598721837710387 * -98465373878350798.09743896037963078560
+37164201 * 2931559660
+679468076118972457796560530571.46287161642138401685 * 93762.2836
+.000000000000000000000000001 * .0000000000000000000000001
+scale = 0; 237854962 * -26
diff --git a/testsuite/bc_multiply_results.txt b/testsuite/bc_multiply_results.txt
new file mode 100644
index 000000000..1dee19c37
--- /dev/null
+++ b/testsuite/bc_multiply_results.txt
@@ -0,0 +1,43 @@
+0
+0
+0
+0
+0
+0
+472638590273489273456
+12374861230476103672835496
+1
+2
+2
+4
+42
+136
+3543531533584430580556128344529291738
+568600835566479683035874339053.4411638427543228060
+7487566285885.8557453089005171423976251098
+373846412427291014394738378015501363938345620046.7869650248829232267\
+2297002026819
+-1
+-2
+-2751507058396910892
+-55374468980751.0837656919743223184
+-163683743464924630346895054
+-36888976187143312550878.567134791289418
+-37706154097.69662826215753378160
+-649904428532907022680241.94791869424754101064
+-290040807.350385412976669306472
+-.11328089187650139309272
+-4617316439035114.40320367843985107357898
+75864709277486862054521256
+10610005628108234.92015040406042336
+84007879267445533366251128067927.91168012197674537856
+56269158624557.1027018519702852
+.055305737239900889424090264801
+2906048299183.472237078104362540110129
+57879411419313585866282299201.3825582163029400
+54512860676747314187949.9414724679950990587298071
+37281153992026463004361915151761464058058.54968338992209002720
+108949072447731660
+63708478450213482928510139572007971.83536929222529239687
+0
+-6184229012
diff --git a/testsuite/bc_pi.bc b/testsuite/bc_pi.bc
new file mode 100644
index 000000000..b98419f12
--- /dev/null
+++ b/testsuite/bc_pi.bc
@@ -0,0 +1,4 @@
+for (i = 0; i <= 100; ++i) {
+ scale = i
+ 4 * a(1)
+}
diff --git a/testsuite/bc_pi_results.txt b/testsuite/bc_pi_results.txt
new file mode 100644
index 000000000..128d6c0ca
--- /dev/null
+++ b/testsuite/bc_pi_results.txt
@@ -0,0 +1,135 @@
+0
+2.8
+3.12
+3.140
+3.1412
+3.14156
+3.141592
+3.1415924
+3.14159264
+3.141592652
+3.1415926532
+3.14159265356
+3.141592653588
+3.1415926535896
+3.14159265358976
+3.141592653589792
+3.1415926535897932
+3.14159265358979320
+3.141592653589793236
+3.1415926535897932384
+3.14159265358979323844
+3.141592653589793238460
+3.1415926535897932384624
+3.14159265358979323846264
+3.141592653589793238462640
+3.1415926535897932384626432
+3.14159265358979323846264336
+3.141592653589793238462643380
+3.1415926535897932384626433832
+3.14159265358979323846264338324
+3.141592653589793238462643383276
+3.1415926535897932384626433832792
+3.14159265358979323846264338327948
+3.141592653589793238462643383279500
+3.1415926535897932384626433832795028
+3.14159265358979323846264338327950288
+3.141592653589793238462643383279502884
+3.1415926535897932384626433832795028840
+3.14159265358979323846264338327950288416
+3.141592653589793238462643383279502884196
+3.1415926535897932384626433832795028841968
+3.14159265358979323846264338327950288419716
+3.141592653589793238462643383279502884197168
+3.1415926535897932384626433832795028841971692
+3.14159265358979323846264338327950288419716936
+3.141592653589793238462643383279502884197169396
+3.1415926535897932384626433832795028841971693992
+3.14159265358979323846264338327950288419716939936
+3.141592653589793238462643383279502884197169399372
+3.1415926535897932384626433832795028841971693993748
+3.14159265358979323846264338327950288419716939937508
+3.141592653589793238462643383279502884197169399375104
+3.1415926535897932384626433832795028841971693993751056
+3.14159265358979323846264338327950288419716939937510580
+3.141592653589793238462643383279502884197169399375105820
+3.1415926535897932384626433832795028841971693993751058208
+3.14159265358979323846264338327950288419716939937510582096
+3.141592653589793238462643383279502884197169399375105820972
+3.1415926535897932384626433832795028841971693993751058209748
+3.14159265358979323846264338327950288419716939937510582097492
+3.141592653589793238462643383279502884197169399375105820974944
+3.1415926535897932384626433832795028841971693993751058209749444
+3.14159265358979323846264338327950288419716939937510582097494456
+3.141592653589793238462643383279502884197169399375105820974944592
+3.1415926535897932384626433832795028841971693993751058209749445920
+3.14159265358979323846264338327950288419716939937510582097494459228
+3.141592653589793238462643383279502884197169399375105820974944592304
+3.141592653589793238462643383279502884197169399375105820974944592307\
+6
+3.141592653589793238462643383279502884197169399375105820974944592307\
+80
+3.141592653589793238462643383279502884197169399375105820974944592307\
+816
+3.141592653589793238462643383279502884197169399375105820974944592307\
+8164
+3.141592653589793238462643383279502884197169399375105820974944592307\
+81640
+3.141592653589793238462643383279502884197169399375105820974944592307\
+816404
+3.141592653589793238462643383279502884197169399375105820974944592307\
+8164060
+3.141592653589793238462643383279502884197169399375105820974944592307\
+81640628
+3.141592653589793238462643383279502884197169399375105820974944592307\
+816406284
+3.141592653589793238462643383279502884197169399375105820974944592307\
+8164062860
+3.141592653589793238462643383279502884197169399375105820974944592307\
+81640628620
+3.141592653589793238462643383279502884197169399375105820974944592307\
+816406286208
+3.141592653589793238462643383279502884197169399375105820974944592307\
+8164062862088
+3.141592653589793238462643383279502884197169399375105820974944592307\
+81640628620896
+3.141592653589793238462643383279502884197169399375105820974944592307\
+816406286208996
+3.141592653589793238462643383279502884197169399375105820974944592307\
+8164062862089984
+3.141592653589793238462643383279502884197169399375105820974944592307\
+81640628620899860
+3.141592653589793238462643383279502884197169399375105820974944592307\
+816406286208998628
+3.141592653589793238462643383279502884197169399375105820974944592307\
+8164062862089986280
+3.141592653589793238462643383279502884197169399375105820974944592307\
+81640628620899862800
+3.141592653589793238462643383279502884197169399375105820974944592307\
+816406286208998628032
+3.141592653589793238462643383279502884197169399375105820974944592307\
+8164062862089986280348
+3.141592653589793238462643383279502884197169399375105820974944592307\
+81640628620899862803480
+3.141592653589793238462643383279502884197169399375105820974944592307\
+816406286208998628034824
+3.141592653589793238462643383279502884197169399375105820974944592307\
+8164062862089986280348252
+3.141592653589793238462643383279502884197169399375105820974944592307\
+81640628620899862803482532
+3.141592653589793238462643383279502884197169399375105820974944592307\
+816406286208998628034825340
+3.141592653589793238462643383279502884197169399375105820974944592307\
+8164062862089986280348253420
+3.141592653589793238462643383279502884197169399375105820974944592307\
+81640628620899862803482534208
+3.141592653589793238462643383279502884197169399375105820974944592307\
+816406286208998628034825342116
+3.141592653589793238462643383279502884197169399375105820974944592307\
+8164062862089986280348253421168
+3.141592653589793238462643383279502884197169399375105820974944592307\
+81640628620899862803482534211704
+3.141592653589793238462643383279502884197169399375105820974944592307\
+816406286208998628034825342117064
+3.141592653589793238462643383279502884197169399375105820974944592307\
+8164062862089986280348253421170676
diff --git a/testsuite/bc_power.bc b/testsuite/bc_power.bc
new file mode 100644
index 000000000..5657cdd7b
--- /dev/null
+++ b/testsuite/bc_power.bc
@@ -0,0 +1,44 @@
+0 ^ 0
+0 ^ 1
+0 ^ 1894
+1 ^ 0
+39746823 ^ 0
+0.238672983047682 ^ 0
+18394762374689237468.97354862973846 ^ 0
+1 ^ 1
+2 ^ 1
+18927361346 ^ 1
+0.23523785962738592635777 ^ 1
+328956734869213746.89782398457234 ^ 1
+8937 ^ 98
+0.124876812394 ^ 2396
+93762.2836 ^ 13
+1 ^ -1
+2 ^ -1
+10 ^ -1
+683734768 ^ -1
+38579623756.897937568235 ^ -1
+1 ^ -32467
+2 ^ -53
+23897 ^ -213
+-1 ^ 1
+-1 ^ 2
+-2 ^ 1
+-2 ^ 2
+-237 ^ 294
+-3746 ^ 28
+-0.3548 ^ 35
+-4267.234 ^ 37
+-326.3246 ^ 78
+-1 ^ -1
+-1 ^ -2
+-2 ^ -1
+-2 ^ -2
+-237 ^ -293
+-784 ^ -23
+-86 ^ -7
+-0.23424398 ^ -781
+-178.234786 ^ -879
+-1274.346 ^ -768
+0 ^ -251
+-0.2959371298 ^ 227
diff --git a/testsuite/bc_power_results.txt b/testsuite/bc_power_results.txt
new file mode 100644
index 000000000..997f44f59
--- /dev/null
+++ b/testsuite/bc_power_results.txt
@@ -0,0 +1,73 @@
+1
+0
+0
+1
+1
+1
+1
+1
+2
+18927361346
+.23523785962738592635777
+328956734869213746.89782398457234
+16473742664221279051571200630760751138799221376964991600670000200609\
+08006052596520320731708604393844468006290371918262741885989163144389\
+39367835091560809036359941703341471396407660150658436796925310445979\
+21333166245765946557344383284626113908419359990042883048537750217279\
+17481980123593363177308481941550382845381799410533956718500484099889\
+610805653325917409549921909941664118421333562129
+0
+43287877285033571298394739716218787350087163435619825150259705419.98\
+016445740928054425
+1.00000000000000000000
+.50000000000000000000
+.10000000000000000000
+.00000000146255543348
+.00000000002592041867
+1.00000000000000000000
+.00000000000000011102
+0
+-1
+1
+-2
+4
+14997322375665265051328725757939209353051902095893907150382724666290\
+49749481660976421019742616298227588464420182758442163654172400528243\
+00885441207762486233574213374503090372518590691583139696652847404883\
+08573912261119588874308960204159666762789603037188471170006223907416\
+60492840269152716750700089148882139254399347568222390231015487895905\
+73727080561379177721440905866857248917982113340543176658480139248897\
+54802503253413282808814063861470711399810899724515727713334909764746\
+27910290211411231279325882505708287941671508154740003122373284699097\
+78346501539634198926772266511968381368929692275950529960923432771985\
+12597189390708050983487158873301681237787429436264801751664042999180\
+3448659818912436089
+11478830555358864333472551120140548480416206583184496764727387456058\
+792742209537931243951391229607936
+-.00000000000000017759
+-2067373624686414405470850679965010694114490999957199847684803894306\
+56243666149296582304582679590231948238805965642713928910384741502707\
+.23224479257866798694
+11606078892843496082360561256965139908586179418605021706789617179085\
+85768049299693425729565480314913006780973928345684673490252494674985\
+0186164225375953066263609289359900615361965737717208159874390.293769\
+70206344604971
+-1.00000000000000000000
+1.00000000000000000000
+-.50000000000000000000
+.25000000000000000000
+0
+0
+-.00000000000002874159
+-1945134149489344891879057554905782841936258356736314337975569799825\
+94091939572752348215929683891336730843553721422164737465108229034947\
+87333189564755763444242676978610321731298729194092653999616928308494\
+26419468484566422775668903315088810746121307679948574976162519479931\
+18935243698160094347216562490000767121041786977792546155155934655909\
+14123833869470494708767968978717730012864171105540029928688274136791\
+98175053824022144065005509214813689232148489884560100200475909009813\
+340098100705258138.98542904577525702068
+0
+0
+0
+0
diff --git a/testsuite/bc_sine.bc b/testsuite/bc_sine.bc
new file mode 100644
index 000000000..d3a547bcd
--- /dev/null
+++ b/testsuite/bc_sine.bc
@@ -0,0 +1,207 @@
+scale = 25
+p = 4 * a(1)
+scale = 20
+s(0)
+s(0.5)
+s(1)
+s(2)
+s(3)
+s(-0.5)
+s(-1)
+s(-2)
+s(-3)
+s(p / 7)
+s(-p / 7)
+s(p / 4)
+s(-p / 4)
+s(p / 3)
+s(-p / 3)
+s(p / 2)
+s(-p / 2)
+s(3 * p / 4)
+s(3 * -p / 4)
+s(p)
+s(-p)
+s(3 * p / 2)
+s(3 * -p / 2)
+s(7 * p / 4)
+s(7 * -p / 4)
+s(13 * p / 4)
+s(13 * -p / 4)
+s(2 * p)
+s(2 * -p)
+s(131231)
+s(-131231)
+s(69.1967507777)
+s(10828)
+s(-16248506.847013148)
+s(2050281000)
+s(8224939)
+s(11334231.1154662464)
+s(-4109411249.2986954846)
+s(-2395915402.13984)
+s(-2795874313)
+s(-2262647256)
+s(3323158182.1239222084)
+s(99901384)
+s(-4202726050.2780080957)
+s(2870000621.3228830588)
+s(-4230239450.981045150)
+s(-1517506941.2678857223)
+s(4004582176)
+s(-4193724543.1108508063)
+s(-3432511261)
+s(1804484812)
+s(3229084127)
+s(-3565317246.583937244)
+s(3503281621)
+s(-3469146313.1766891244)
+s(-2257308049.307721068)
+s(-3978441809)
+s(3431564304.3752537)
+s(1249644440.2464914559)
+s(2395558891.1188487974)
+s(-2607820706.4079280116)
+s(1208310007)
+s(-3758597557.863203175)
+s(1186920672)
+s(-3988103872)
+s(-4280635328.4194857577)
+s(1051748072)
+s(-1884006279)
+s(-1046568719.2698663389)
+s(2482991410)
+s(-2106101268.1154045959)
+s(3530359346.77217900)
+s(-3373362543)
+s(2601598062)
+s(2987020862)
+s(-12033356.2057140648)
+s(-3721760707)
+s(2842387705.4145759704)
+s(3515832681.1808393297)
+s(-3658522034.16149)
+s(3963658030.2860423992)
+s(2977802215.597946655)
+s(-4271392570.4091498761)
+s(2378692585)
+s(-3545193743.629374782)
+s(-1762458738)
+s(-1174277828.4264040126)
+s(-1724994857)
+s(2802750230.1783499408)
+s(-3068133550)
+s(3324811474.621822235)
+s(2873024984)
+s(-3509056632.3888206298)
+s(1772903162.647192879)
+s(2836543102)
+s(4117858580.186)
+s(2988632386.4063754522)
+s(-4256784971.1770067447)
+s(2280820447)
+s(-2865200306)
+s(-3329592486)
+s(519126268)
+s(-2452430452)
+s(-2693220186.62104082)
+s(-3796811992.14485798)
+s(3619792326)
+s(2697791049.3038381550)
+s(3751267834.2808166557)
+s(-3761719074)
+s(-3824087631)
+s(2119301150)
+s(1398148974)
+s(-3386564819.1351816969)
+s(-3171483098)
+s(3688944941.3273318162)
+s(3060521119)
+s(-3527110404)
+s(3699631193)
+s(3872838898)
+s(3880350192)
+s(-4109411249.2986954846)
+s(-2395915402.13984)
+s(-2795874313)
+s(-2262647256)
+s(3323158182.1239222084)
+s(99901384)
+s(-4202726050.2780080957)
+s(2870000621.3228830588)
+s(-4230239450.981045150)
+s(-1517506941.2678857223)
+s(4004582176)
+s(-4193724543.1108508063)
+s(-3432511261)
+s(1804484812)
+s(3229084127)
+s(-3565317246.583937244)
+s(3503281621)
+s(-3469146313.1766891244)
+s(-2257308049.307721068)
+s(-3978441809)
+s(3431564304.3752537)
+s(1249644440.2464914559)
+s(2395558891.1188487974)
+s(-2607820706.4079280116)
+s(1208310007)
+s(-3758597557.863203175)
+s(1186920672)
+s(-3988103872)
+s(-4280635328.4194857577)
+s(1051748072)
+s(-1884006279)
+s(-1046568719.2698663389)
+s(2482991410)
+s(-2106101268.1154045959)
+s(3530359346.77217900)
+s(-3373362543)
+s(2601598062)
+s(2576349783.2446436039)
+s(2987020862)
+s(-12033356.2057140648)
+s(-3721760707)
+s(2842387705.4145759704)
+s(3515832681.1808393297)
+s(-3658522034.16149)
+s(3963658030.2860423992)
+s(2977802215.597946655)
+s(-4271392570.4091498761)
+s(2378692585)
+s(-3545193743.629374782)
+s(-1762458738)
+s(-1174277828.4264040126)
+s(-1724994857)
+s(2802750230.1783499408)
+s(-3068133550)
+s(3324811474.621822235)
+s(2873024984)
+s(-3509056632.3888206298)
+s(1772903162.647192879)
+s(2836543102)
+s(4117858580.186)
+s(2988632386.4063754522)
+s(-4256784971.1770067447)
+s(2280820447)
+s(-2865200306)
+s(-3329592486)
+s(519126268)
+s(-2452430452)
+s(-2693220186.62104082)
+s(-3796811992.14485798)
+s(3619792326)
+s(2697791049.3038381550)
+s(3751267834.2808166557)
+s(-3761719074)
+s(-3824087631)
+s(2119301150)
+s(1398148974)
+s(-3386564819.1351816969)
+s(-3171483098)
+s(3688944941.3273318162)
+s(3060521119)
+s(-3527110404)
+s(3699631193)
+s(3872838898)
+s(3880350192)
diff --git a/testsuite/bc_sine_results.txt b/testsuite/bc_sine_results.txt
new file mode 100644
index 000000000..7a4a1ab0c
--- /dev/null
+++ b/testsuite/bc_sine_results.txt
@@ -0,0 +1,204 @@
+0
+.47942553860420300027
+.84147098480789650665
+.90929742682568169539
+.14112000805986722210
+-.47942553860420300027
+-.84147098480789650665
+-.90929742682568169539
+-.14112000805986722210
+.43388373911755812047
+-.43388373911755812047
+.70710678118654752439
+-.70710678118654752439
+.86602540378443864676
+-.86602540378443864676
+1.00000000000000000000
+-1.00000000000000000000
+.70710678118654752440
+-.70710678118654752440
+0
+0
+-1.00000000000000000000
+1.00000000000000000000
+-.70710678118654752440
+.70710678118654752440
+-.70710678118654752439
+.70710678118654752439
+0
+0
+.38173640790989719211
+-.38173640790989719211
+.08162149793819434415
+.87714140586973771462
+-.91157035998052051623
+-.69638975047120679880
+-.94806056135672896231
+-.54548669379730874215
+.14605234154783145589
+-.12183062787430962391
+-.89832305526331682409
+-.99513029384033555290
+.76528428398894958149
+.51077956237618482050
+-.75908868040685122962
+-.37015497140201575652
+-.51432535569032144654
+.68890201397514289831
+.88200006249578882510
+-.01188893762444044480
+-.55298206739629427055
+-.39165958853437135625
+.17732674488831117445
+-.09648816960119759281
+.15728984163381104344
+-.31554983227150461370
+-.72225704678824601977
+.96170480789326775287
+-.47636475887571231114
+-.98999375714278585763
+-.06715264746977580303
+-.69464867397161089634
+.58037673122614640119
+-.44244898040675115062
+.04242496278231069061
+.96417934585711006987
+-.54513053517818430563
+-.28604677908958958915
+-.68003854521180919710
+.26597321569379963920
+-.34591048991595943570
+-.17084074152217894535
+-.42880744669595980174
+.36518031021580667844
+-.03514839609475800827
+.93891962312087620513
+-.69421849362562852947
+.15169857474887222961
+-.00226070393499995347
+.96209233301706432156
+-.79937182245558378826
+.99966966326862290520
+.85234799672007656117
+-.20824280061137520443
+-.00761257856348159450
+.10708922858398661064
+-.80233147080821341443
+.26521358383069223461
+-.95173930946495828679
+.66210405748455769256
+.30054820568403786217
+.21640593048970779808
+-.87596287572245980692
+.74627849623707962934
+-.25747200288605259984
+-.14700538617135227740
+-.06294254604551440990
+.67948313824962059899
+.83714389089726798409
+.33805040346429707760
+.80273418514828673749
+.72262501870089953244
+-.77469383027517310713
+-.15575896025754423345
+.22191568853026376075
+.25137052589938954082
+-.80534308288073574163
+-.44963537508211028805
+-.92368907556208259630
+-.80963411623457804531
+-.96822928101198069490
+-.46604999828123759716
+.63275578793565409192
+-.40563425346575205109
+.13095444406203282638
+.96217617474547242151
+-.16256793375739137005
+.71791623784197898982
+-.10713685791219679248
+.50758780541979250307
+-.09795373670371402656
+.14605234154783145589
+-.12183062787430962391
+-.89832305526331682409
+-.99513029384033555290
+.76528428398894958149
+.51077956237618482050
+-.75908868040685122962
+-.37015497140201575652
+-.51432535569032144654
+.68890201397514289831
+.88200006249578882510
+-.01188893762444044480
+-.55298206739629427055
+-.39165958853437135625
+.17732674488831117445
+-.09648816960119759281
+.15728984163381104344
+-.31554983227150461370
+-.72225704678824601977
+.96170480789326775287
+-.47636475887571231114
+-.98999375714278585763
+-.06715264746977580303
+-.69464867397161089634
+.58037673122614640119
+-.44244898040675115062
+.04242496278231069061
+.96417934585711006987
+-.54513053517818430563
+-.28604677908958958915
+-.68003854521180919710
+.26597321569379963920
+-.34591048991595943570
+-.17084074152217894535
+-.42880744669595980174
+.36518031021580667844
+-.03514839609475800827
+.75884554410943292265
+.93891962312087620513
+-.69421849362562852947
+.15169857474887222961
+-.00226070393499995347
+.96209233301706432156
+-.79937182245558378826
+.99966966326862290520
+.85234799672007656117
+-.20824280061137520443
+-.00761257856348159450
+.10708922858398661064
+-.80233147080821341443
+.26521358383069223461
+-.95173930946495828679
+.66210405748455769256
+.30054820568403786217
+.21640593048970779808
+-.87596287572245980692
+.74627849623707962934
+-.25747200288605259984
+-.14700538617135227740
+-.06294254604551440990
+.67948313824962059899
+.83714389089726798409
+.33805040346429707760
+.80273418514828673749
+.72262501870089953244
+-.77469383027517310713
+-.15575896025754423345
+.22191568853026376075
+.25137052589938954082
+-.80534308288073574163
+-.44963537508211028805
+-.92368907556208259630
+-.80963411623457804531
+-.96822928101198069490
+-.46604999828123759716
+.63275578793565409192
+-.40563425346575205109
+.13095444406203282638
+.96217617474547242151
+-.16256793375739137005
+.71791623784197898982
+-.10713685791219679248
+.50758780541979250307
+-.09795373670371402656
diff --git a/testsuite/bc_sqrt.bc b/testsuite/bc_sqrt.bc
new file mode 100644
index 000000000..afd87ff0f
--- /dev/null
+++ b/testsuite/bc_sqrt.bc
@@ -0,0 +1,18 @@
+scale = 20
+sqrt(0)
+sqrt(2)
+sqrt(4)
+sqrt(9)
+sqrt(16)
+sqrt(25)
+sqrt(121)
+sqrt(48765)
+sqrt(9287356207356)
+sqrt(0.189274385967238956872354)
+sqrt(12389467137496823.134567829387456283946)
+sqrt(.0000000000000000000000000000123)
+sqrt(1)
+scale = 0;
+sqrt(1407)
+sqrt(79101)
+scale = 6; sqrt(88.1247699921300025847737099094480986051698668662822009535526240)
diff --git a/testsuite/bc_sqrt_results.txt b/testsuite/bc_sqrt_results.txt
new file mode 100644
index 000000000..10a4fa95d
--- /dev/null
+++ b/testsuite/bc_sqrt_results.txt
@@ -0,0 +1,16 @@
+0
+1.41421356237309504880
+2.00000000000000000000
+3.00000000000000000000
+4.00000000000000000000
+5.00000000000000000000
+11.00000000000000000000
+220.82798735667542192643
+3047516.39985021245496456781
+.435056761776252544285578
+111307983.260397019622398608908
+.0000000000000035071355833500363
+1.00000000000000000000
+37
+281
+9.3874794269883757005315658512340070115147163425837869223395574
diff --git a/testsuite/bc_strings.bc b/testsuite/bc_strings.bc
new file mode 100644
index 000000000..1cb7d6a61
--- /dev/null
+++ b/testsuite/bc_strings.bc
@@ -0,0 +1,12 @@
+"string"
+"another string"
+"yet
+another
+string"
+"noescapes\n"
+"newline
+"
+print "string"
+print "newline\n"
+
+print "\\\e\n"
diff --git a/testsuite/bc_strings_results.txt b/testsuite/bc_strings_results.txt
new file mode 100644
index 000000000..89b01ac49
--- /dev/null
+++ b/testsuite/bc_strings_results.txt
@@ -0,0 +1,5 @@
+stringanother stringyet
+another
+stringnoescapes\nnewline
+stringnewline
+\\
diff --git a/testsuite/bc_subtract.bc b/testsuite/bc_subtract.bc
new file mode 100644
index 000000000..61ea953ea
--- /dev/null
+++ b/testsuite/bc_subtract.bc
@@ -0,0 +1,32 @@
+0 - 0
+0 - 1
+1 - 0
+1 - 1
+5 - 2
+2 - 9
+321974 - 12845976238457
+2874519803456710938465 - 384723854
+10000000000000000000000000000000000000000 - 999999999999999999999999999999999999999
+10000000000000000000000000000000000000000 - 9999999999999999999999999999999999999999
+10000000000000000000000000000000000000000 - 999999999999999999999999999999999999999.99999999999999999999999999999999999
+10000000000000000000000000000000000000000 - 9999999999999999999999999999999999999999.9999999999999999999999999999999999
+10000000000000000000000000000000000000000 - 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000001
+10000000000000000000000000000000000000001 - 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000001
+10000000000000000000000000000000000000000.0000000001 - 0.0000000000000000000000000000000000000000000000000000000000000000000000000001
+-2 - 6
+-23784692345 - 182934721309467230894628735496027345
+-224352354962873059862 - -1245723576829456278354960278345
+-3468273598 - -12354243
+-0.92345768293 - -2354768923
+-712384634.123476823 - -24768293376
+-1879234638 - -0.917234869234
+-0.9172438692134 - -0.971284967124
+-0.1283475123465 - -0.937462346
+-124765829346.2837468293562 - -0.923467829346
+-12476829385769 - -1928476259034.8378629356
+-0.38476284395876345 - -94875394587623.2357869324857
+-4674596708467.34754789403674343567 - -48672394852354698.237548629345
+979519669 - 3018100865
+929002449 - 3280677283
+0 - -525898
+3- - -3
diff --git a/testsuite/bc_subtract_results.txt b/testsuite/bc_subtract_results.txt
new file mode 100644
index 000000000..6850b5bc1
--- /dev/null
+++ b/testsuite/bc_subtract_results.txt
@@ -0,0 +1,36 @@
+0
+-1
+1
+0
+3
+-7
+-12845975916483
+2874519803456326214611
+9000000000000000000000000000000000000001
+1
+9000000000000000000000000000000000000000.000000000000000000000000000\
+00000001
+.0000000000000000000000000000000001
+9999999999999999999999999999999999999999.999999999999999999999999999\
+99999999999999999999999999999999999999999999999999999999999
+10000000000000000000000000000000000000000.99999999999999999999999999\
+999999999999999999999999999999999999999999999999999999999999
+10000000000000000000000000000000000000000.00000000009999999999999999\
+99999999999999999999999999999999999999999999999999
+-8
+-182934721309467230894628759280719690
+1245723576605103923392087218483
+-3455919355
+2354768922.07654231707
+24055908741.876523177
+-1879234637.082765130766
+.0540410979106
+.8091148336535
+-124765829345.3602790000102
+-10548353126734.1621370644
+94875394587622.85102408852693655
+48667720255646230.89000073530825656433
+-2038581196
+-2351674834
+525898
+0
diff --git a/testsuite/bc_vars.bc b/testsuite/bc_vars.bc
new file mode 100644
index 000000000..91e3572c2
--- /dev/null
+++ b/testsuite/bc_vars.bc
@@ -0,0 +1,7 @@
+scale=10;123981239.981273987 * 12983791827398.29836472638
+scale=100;759634576394.3946587934658364895 / 9834759834895386.36459364958346
+34895734986539489834759837489573498573.398475984759837485734987598345 + 9823749832749872384234872934.28347982374987239847982374
+a=123123123.987239874; b=123123123.239479823748; a+b
+20347023.23498723984 - 28934723874.234720384
+scale=100;a=739534985.895347284957;b=238746782364.2374623784; c = a / b; c
+s7298367203972395108367910823465293084561329084561390845613409516734503870691837451 + 785621394067928346918023476190834672198467134908618723249671349062187346898241093486139046139084613490817356023871869102746182749061872609129847
diff --git a/testsuite/bc_vars_results.txt b/testsuite/bc_vars_results.txt
new file mode 100644
index 000000000..6597d8439
--- /dev/null
+++ b/testsuite/bc_vars_results.txt
@@ -0,0 +1,12 @@
+1609746610419572350599.59456175545
+.0000772397688552681359718594121969204138521230712049526233926741658\
+845368495051158801794834809672994
+34895734996363239667509709873808371507.68195580850970988421481133834\
+5
+246246247.226719697748
+-28914376850.99973314416
+.0030975704827179453786044330548590249517387192084765414205077089498\
+482709063381782183114683451531598
+78562139406792834691802347619083467219846713490861872324967134906218\
+73468982410934861390461390846134908173560238718691027461827490618726\
+09129847
diff --git a/testsuite/dc.tests b/testsuite/dc.tests
index d7a332b9c..8edfa07ca 100755
--- a/testsuite/dc.tests
+++ b/testsuite/dc.tests
@@ -41,4 +41,24 @@ testing "dc complex without spaces (multiple args)" \
"16\n" \
"" ""
+for f in dc_*.dc; do
+ r="`basename "$f" .dc`_results.txt"
+ test -f "$r" || continue
+ # testing "test name" "command" "expected result" "file input" "stdin"
+ testing "dc $f" \
+ "{ { dc $f 2>&1; echo E:\$? >&2; } | diff -u - $r; echo E:\$?; } 2>&1" \
+ "E:0\nE:0\n" \
+ "" ""
+done
+
+for f in dcx_*.dc; do
+ r="`basename "$f" .dc`_results.txt"
+ test -f "$r" || continue
+ # testing "test name" "command" "expected result" "file input" "stdin"
+ testing "dc -x $f" \
+ "{ { dc -x $f 2>&1; echo E:\$? >&2; } | diff -u - $r; echo E:\$?; } 2>&1" \
+ "E:0\nE:0\n" \
+ "" ""
+done
+
exit $FAILCOUNT
diff --git a/testsuite/dc_add.dc b/testsuite/dc_add.dc
new file mode 100644
index 000000000..42da2f1f3
--- /dev/null
+++ b/testsuite/dc_add.dc
@@ -0,0 +1,33 @@
+0 0+pR
+0 0 0++pR
+0 1+pR
+0 1 1++pR
+1 1+pR
+1 0+pR
+2 5+pR
+237 483+pR
+999 999+pR
+2374623 324869356734856+pR
+2378639084586723980562 23468729367839+pR
+37298367203972395108367910823465293084561329084561390845613409516734503870691837451 785621394067928346918023476190834672198467134908618723249671349062187346898241093486139046139084613490817356023871869102746182749061872609129847+pR
+1.1 0+pR
+0 1.1+pR
+457283.731284923576 37842934672834.3874629385672354+pR
+1.0 0.1+pR
+3746289134067138046 0.138375863945672398456712389456273486293+pR
+_1 _1+pR
+_4 _15+pR
+_1346782 _1287904651762468913476+pR
+99999999999999999999999999999999999999999999999999999999999.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001+pR
+99999999999999999999999999999999999999999999999999999999999.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999995 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005+pR
+99999999999999999999999999999999999999999999999999999999999.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001+pR
+99999999999999999999999999999999999999999999999999999999999.999999999999999999999999999999999999999999999999999999999899999999999999999999999999999999999999999999999999999999999999 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001+pR
+99999999999999999999999999999999999989999999999999999999999.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001+pR
+_1889985797 2012747315+pR
+0 _14338.391079082+pR
+_2422297 1.3134942556+pR
+_1289374 1289374.2893417 0.238971 28937.28971+++pR
+1289374 1289374.2893417 _0.238971 28937.28971+++pR
+1289374 1289374.2893417 0.238971 _28937.28971+++pR
+1289374 1289374.2893417 _0.238971 _28937.28971+++pR
+1289374 _1289374.2893417 _0.238971 _28937.28971+++pR
diff --git a/testsuite/dc_add_results.txt b/testsuite/dc_add_results.txt
new file mode 100644
index 000000000..542a62ea3
--- /dev/null
+++ b/testsuite/dc_add_results.txt
@@ -0,0 +1,45 @@
+0
+0
+1
+2
+2
+1
+7
+720
+1998
+324869359109479
+2378639108055453348401
+78562139406792834691802347619083467219846713490861872324967138636055\
+45508706362018540498696043776980521464405852627147161556994835657433\
+00967298
+1.1
+1.1
+37842935130118.1187478621432354
+1.1
+3746289134067138046.138375863945672398456712389456273486293
+-2
+-19
+-1287904651762470260258
+100000000000000000000000000000000000000000000000000000000000.0000000\
+00000000000000000000000000000000000000000000000000000000000000000000\
+000000000000000000000000000000000000000000000
+100000000000000000000000000000000000000000000000000000000000.0000000\
+00000000000000000000000000000000000000000000000000000000000000000000\
+000000000000000000000000000000000000000000000
+100000000000000000000000000000000000000000000000000000000000.0000000\
+00000000000000000000000000000000000000000000000000000000000000000000\
+000000000000000000000000000000000000000009999
+99999999999999999999999999999999999999999999999999999999999.99999999\
+99999999999999999999999999999999999999999999999999000000000000000000\
+00000000000000000000000000000000000000009999
+99999999999999999999999999999999999990000000000000000000000.00000000\
+00000000000000000000000000000000000000000000000000000000000000000000\
+00000000000000000000000000000000000000009999
+122761518
+-14338.391079082
+-2422295.6865057444
+28937.8180227
+2607685.3400807
+2549811.2386027
+2549810.7606607
+-28937.8180227
diff --git a/testsuite/dc_boolean.dc b/testsuite/dc_boolean.dc
new file mode 100644
index 000000000..ea72623b8
--- /dev/null
+++ b/testsuite/dc_boolean.dc
@@ -0,0 +1,27 @@
+0 1(pR
+1 1(pR
+2 1(pR
+_1 1(pR
+_1 0(pR
+_1 _1(pR
+_1 _2(pR
+0 1{pR
+1 1{pR
+2 1{pR
+_1 1{pR
+_1 0{pR
+_1 _1{pR
+_1 _2{pR
+0 0GpR
+0 1GpR
+1 0GpR
+_1 _1GpR
+0 _1GpR
+_1 0GpR
+1 1GpR
+238 2GpR
+0NpR
+1NpR
+_1NpR
+2398NpR
+_2983.2389NpR
diff --git a/testsuite/dc_boolean_results.txt b/testsuite/dc_boolean_results.txt
new file mode 100644
index 000000000..6d29c5b60
--- /dev/null
+++ b/testsuite/dc_boolean_results.txt
@@ -0,0 +1,27 @@
+0
+0
+1
+0
+0
+0
+1
+0
+1
+1
+0
+0
+1
+1
+1
+0
+0
+1
+0
+0
+1
+0
+1
+0
+0
+0
+0
diff --git a/testsuite/dc_decimal.dc b/testsuite/dc_decimal.dc
new file mode 100644
index 000000000..ebbb2dc91
--- /dev/null
+++ b/testsuite/dc_decimal.dc
@@ -0,0 +1,36 @@
+0pR
+0.0pR
+.0000pR
+000000000000000000000000.00000000000000000000000pR
+000000000000000000000000000135482346782356pR
+000000000000000000000000002pR
+1pR
+11pR
+123pR
+7505pR
+1023468723275435238491972521917846pR
+4343472432431705867392073517038270398027352709027389273920739037937960379637893607893607893670530278200795207952702873892786172916728961783907893607418973587857386079679267926737520730925372983782793652793pR
+_1pR
+_203pR
+_57pR
+_18586pR
+_31378682943772818461924738352952347258pR
+_823945628745673589495067238723986520375698237620834674509627345273096287563846592384526349872634895763257893467523987578690283762897568459072348758071071087813501875908127359018715023841710239872301387278pR
+.123521346523546pR
+0.1245923756273856pR
+_.1024678456387pR
+_0.8735863475634587pR
+4.0pR
+_6.0pR
+234237468293576.000000000000000000000000000000pR
+23987623568943567.00000000000000000005677834650000000000000pR
+23856934568940675.000000000000000435676782300000000000000456784pR
+77567648698496.000000000000000000587674750000000000458563800000000000000pR
+2348672354968723.2374823546000000000003256987394502346892435623870000000034578pR
+_2354768.000000000000000000000000000000000000pR
+_96739874567.000000000347683456pR
+_3764568345.000000000004573845000000347683460pR
+_356784356.934568495770004586495678300000000pR
+74325437345273852773827101738273127312738521733017537073520735207307570358738257390761276072160719802671980267018728630178.7082681027680521760217867841276127681270867827821768173178207830710978017738178678012767377058785378278207385237085237803278203782037237582795870pR
+_756752732785273851273728537852738257837283678965738527385272983678372867327835672967385278372637862738627836279863782673862783670.71738178361738718367186378610738617836781603760178367018603760178107735278372832783728367826738627836278378260736270367362073867097307925pR
+9812734012837410982345719208345712908357412903587192048571920458712.23957182459817249058172945781pR
diff --git a/testsuite/dc_decimal_results.txt b/testsuite/dc_decimal_results.txt
new file mode 100644
index 000000000..275d431c6
--- /dev/null
+++ b/testsuite/dc_decimal_results.txt
@@ -0,0 +1,51 @@
+0
+0
+0
+0
+135482346782356
+2
+1
+11
+123
+7505
+1023468723275435238491972521917846
+43434724324317058673920735170382703980273527090273892739207390379379\
+60379637893607893607893670530278200795207952702873892786172916728961\
+78390789360741897358785738607967926792673752073092537298378279365279\
+3
+-1
+-203
+-57
+-18586
+-31378682943772818461924738352952347258
+-8239456287456735894950672387239865203756982376208346745096273452730\
+96287563846592384526349872634895763257893467523987578690283762897568\
+45907234875807107108781350187590812735901871502384171023987230138727\
+8
+.123521346523546
+.1245923756273856
+-.1024678456387
+-.8735863475634587
+4.0
+-6.0
+234237468293576.000000000000000000000000000000
+23987623568943567.00000000000000000005677834650000000000000
+23856934568940675.000000000000000435676782300000000000000456784
+77567648698496.00000000000000000058767475000000000045856380000000000\
+0000
+2348672354968723.237482354600000000000325698739450234689243562387000\
+0000034578
+-2354768.000000000000000000000000000000000000
+-96739874567.000000000347683456
+-3764568345.000000000004573845000000347683460
+-356784356.934568495770004586495678300000000
+74325437345273852773827101738273127312738521733017537073520735207307\
+570358738257390761276072160719802671980267018728630178.7082681027680\
+52176021786784127612768127086782782176817317820783071097801773817867\
+8012767377058785378278207385237085237803278203782037237582795870
+-7567527327852738512737285378527382578372836789657385273852729836783\
+72867327835672967385278372637862738627836279863782673862783670.71738\
+17836173871836718637861073861783678160376017836701860376017810773527\
+8372832783728367826738627836278378260736270367362073867097307925
+9812734012837410982345719208345712908357412903587192048571920458712.\
+23957182459817249058172945781
diff --git a/testsuite/dc_divide.dc b/testsuite/dc_divide.dc
new file mode 100644
index 000000000..38b874e9f
--- /dev/null
+++ b/testsuite/dc_divide.dc
@@ -0,0 +1,33 @@
+20k
+0 1/pR
+0 321566/pR
+0 0.3984567238456/pR
+1 1/pR
+1 1287469297356/pR
+1 0.2395672438567234/pR
+1 237586239856.0293596728392360/pR
+1249687284356 3027949207835207/pR
+378617298617396719 35748521/pR
+9348576237845624358 0.9857829375461/pR
+35768293846193284 2374568947.045762839567823/pR
+_78987234567812345 876542837618936/pR
+_356789237555535468 0.3375273860984786903/pR
+_5203475364850390 435742903748307.70869378534043296404530458/pR
+_0.37861723347576903 7385770896/pR
+_0.399454682043962 0.34824389304/pR
+_0.6920414523873204 356489645223.76076045304879030/pR
+_35872917389671.7573280963748 73924708/pR
+_78375896314.4836709876983 0.78356798637817/pR
+_2374123896417.143789621437581 347821469423789.1473856783960/pR
+_896729350238549726 _34976289345762/pR
+_2374568293458762348596 _0.8792370647234987679/pR
+_237584692306721845726038 _21783910782374529637.978102738746189024761/pR
+_0.23457980123576298375682 _1375486293874612/pR
+_0.173897061862478951264 _0.8179327486017634987516298745/pR
+_0.9186739823576829347586 _0.235678293458756239846/pR
+_0.9375896183746982374568 _13784962873546.0928729395476283745/pR
+_2930754618923467.12323745862937465 _734869238465/pR
+_23745861923467.874675129834675 _0.23542357869124756/pR
+_3878923750692883.7238596702834756902 _7384192674957215364986723.9738461923487621983/pR
+1 0.00000000000000000000000000000000000000000002346728372937352457354204563027/pR
+239854711289345712 2891374 182 .2893 ///pR
diff --git a/testsuite/dc_divide_results.txt b/testsuite/dc_divide_results.txt
new file mode 100644
index 000000000..340ae94c1
--- /dev/null
+++ b/testsuite/dc_divide_results.txt
@@ -0,0 +1,32 @@
+0
+0
+0
+1.00000000000000000000
+.00000000000077671755
+4.17419336592637110778
+.00000000000420899796
+.00041271738677857404
+10591131829.40901859967857131767
+9483402361494453751.52388015648196297248
+15063068.13735316451497043884
+-90.11223545260531110575
+-1057067521778623447.45138528213564485251
+-11.94161814246320631346
+-.00000000005126306228
+-1.14705437777218917343
+-.00000000000194126663
+-485262.88923145638029569727
+-100024372711.74763635544535424582
+-.00682569681609989277
+25638.20711150436682153521
+2700714504347599627864.24626421085374010264
+10906.42973524078145692731
+.00000000000000017054
+.21260557443109085166
+3.89799997647407910677
+.00000000000006801538
+3988.13076601933678578945
+100864416620775.31076855630746548983
+.00000000052530099381
+42612515855353136519261264261472677699404182.78776061098893912189
+52187553294928.31582417732156163799
diff --git a/testsuite/dc_divmod.dc b/testsuite/dc_divmod.dc
new file mode 100644
index 000000000..1633203ff
--- /dev/null
+++ b/testsuite/dc_divmod.dc
@@ -0,0 +1,64 @@
+20k
+0 1~pRpR
+0 321566~pRpR
+0 0.3984567238456~pRpR
+1 1~pRpR
+1 1287469297356~pRpR
+1 0.2395672438567234~pRpR
+1 237586239856.0293596728392360~pRpR
+1249687284356 3027949207835207~pRpR
+378617298617396719 35748521~pRpR
+9348576237845624358 0.9857829375461~pRpR
+35768293846193284 2374568947.045762839567823~pRpR
+_78987234567812345 876542837618936~pRpR
+_356789237555535468 0.3375273860984786903~pRpR
+_5203475364850390 435742903748307.70869378534043296404530458~pRpR
+_0.37861723347576903 7385770896~pRpR
+_0.399454682043962 0.34824389304~pRpR
+_0.6920414523873204 356489645223.76076045304879030~pRpR
+_35872917389671.7573280963748 73924708~pRpR
+_78375896314.4836709876983 0.78356798637817~pRpR
+_2374123896417.143789621437581 347821469423789.1473856783960~pRpR
+_896729350238549726 _34976289345762~pRpR
+_2374568293458762348596 _0.8792370647234987679~pRpR
+_237584692306721845726038 _21783910782374529637.978102738746189024761~pRpR
+_0.23457980123576298375682 _1375486293874612~pRpR
+_0.173897061862478951264 _0.8179327486017634987516298745~pRpR
+_0.9186739823576829347586 _0.235678293458756239846~pRpR
+_0.9375896183746982374568 _13784962873546.0928729395476283745~pRpR
+_2930754618923467.12323745862937465 _734869238465~pRpR
+_23745861923467.874675129834675 _0.23542357869124756~pRpR
+_3878923750692883.7238596702834756902 _7384192674957215364986723.9738461923487621983~pRpR
+1 0.00000000000000000000000000000000000000000002346728372937352457354204563027~pRpR
+0k
+0 1~pRpR
+0 321566~pRpR
+0 0.3984567238456~pRpR
+1 1~pRpR
+1 1287469297356~pRpR
+1 0.2395672438567234~pRpR
+1 237586239856.0293596728392360~pRpR
+1249687284356 3027949207835207~pRpR
+378617298617396719 35748521~pRpR
+9348576237845624358 0.9857829375461~pRpR
+35768293846193284 2374568947.045762839567823~pRpR
+_78987234567812345 876542837618936~pRpR
+_356789237555535468 0.3375273860984786903~pRpR
+_5203475364850390 435742903748307.70869378534043296404530458~pRpR
+_0.37861723347576903 7385770896~pRpR
+_0.399454682043962 0.34824389304~pRpR
+_0.6920414523873204 356489645223.76076045304879030~pRpR
+_35872917389671.7573280963748 73924708~pRpR
+_78375896314.4836709876983 0.78356798637817~pRpR
+_2374123896417.143789621437581 347821469423789.1473856783960~pRpR
+_896729350238549726 _34976289345762~pRpR
+_2374568293458762348596 _0.8792370647234987679~pRpR
+_237584692306721845726038 _21783910782374529637.978102738746189024761~pRpR
+_0.23457980123576298375682 _1375486293874612~pRpR
+_0.173897061862478951264 _0.8179327486017634987516298745~pRpR
+_0.9186739823576829347586 _0.235678293458756239846~pRpR
+_0.9375896183746982374568 _13784962873546.0928729395476283745~pRpR
+_2930754618923467.12323745862937465 _734869238465~pRpR
+_23745861923467.874675129834675 _0.23542357869124756~pRpR
+_3878923750692883.7238596702834756902 _7384192674957215364986723.9738461923487621983~pRpR
+1 0.00000000000000000000000000000000000000000002346728372937352457354204563027~pRpR
diff --git a/testsuite/dc_divmod_results.txt b/testsuite/dc_divmod_results.txt
new file mode 100644
index 000000000..c55e9303d
--- /dev/null
+++ b/testsuite/dc_divmod_results.txt
@@ -0,0 +1,126 @@
+0
+0
+0
+0
+0
+0
+0
+1.00000000000000000000
+.00000000165742620220
+.00000000000077671755
+.000000000000000000000404744340951948
+4.17419336592637110778
+.000000001121901731436913388268041440
+.00000000000420899796
+.00000053204123177372
+.00041271738677857404
+.00000000000027633393
+10591131829.40901859967857131767
+.000000000000000000008615446968672
+9483402361494453751.52388015648196297248
+.00000000001477790730322167374655468
+15063068.13735316451497043884
+-.00000456715270151800
+-90.11223545260531110575
+-.000000000000000000002529869118878532347
+-1057067521778623447.45138528213564485251
+-.0000022326265743225222025732006233770753463532
+-11.94161814246320631346
+-.00000000004830962712
+-.00000000005126306228
+-.0000000000000000000013970700728
+-1.14705437777218917343
+-.0000000001738947526290727016287423110
+-.00000000000194126663
+-.00000000000045885284
+-485262.88923145638029569727
+-.0000000000000000000075040663382506
+-100024372711.74763635544535424582
+-.000001609445227594519190694403080
+-.00682569681609989277
+-.00000019041665271998
+25638.20711150436682153521
+-.000000000000000000005200979673140462744
+2700714504347599627864.24626421085374010264
+-.15832010238185026960887316509782343287709
+10906.42973524078145692731
+-.00000436867838665327682
+.00000000000000017054
+-.000000000000000000004322546241638067588696083330
+.21260557443109085166
+-.00000000000000000000103666428264443764258
+3.89799997647407910677
+-.000000130244568783188524951028009600190
+.00000000000006801538
+-.00000000467404345575
+3988.13076601933678578945
+-.0000000000000000000004406586308076852
+100864416620775.31076855630746548983
+-53336.193401942302558132911110799109649707477
+.00000000052530099381
+.0000000000000000000000000000000000000000000000000000000000000001907\
+266929376630027064745963897
+42612515855353136519261264261472677699404182.78776061098893912189
+0
+0
+0
+0
+0
+0
+0
+1
+1
+0
+.0417310245731064
+4
+1.0000000000000000
+0
+1249687284356
+0
+14621810
+10591131829
+.5164321195789
+9483402361494453751
+326154559.235716791539036
+15063068
+-98379182108105
+-90
+-.1523548944025685359
+-1057067521778623447
+-410303423619005.20436836125523739550164962
+-11
+-.37861723347576903
+0
+-.051210789003962
+-1
+-.69204145238732040
+0
+-65736175.7573280963748
+-485262
+-.58582391357943
+-100024372711
+-2374123896417.143789621437581
+0
+-7243991903570
+25638
+-.2165246218974912344
+2700714504347599627864
+-9361314145225494248.811531234062495956534
+10906
+-.23457980123576298375682
+0
+-.1738970618624789512640000000
+0
+-.2116391019814142152206
+3
+-.9375896183746982374568
+0
+-96095925047.12323745862937465
+3988
+-.07316224567061600
+100864416620775
+-3878923750692883.7238596702834756902
+0
+.0000000000000000000000000000000000000000000184866017689020776005643\
+3621086
+42612515855353136519261264261472677699404182
diff --git a/testsuite/dc_misc.dc b/testsuite/dc_misc.dc
new file mode 100644
index 000000000..222a3ad26
--- /dev/null
+++ b/testsuite/dc_misc.dc
@@ -0,0 +1 @@
+zp198202389.289374pzp[Hello, World!]pzpzpfrfczpfR
diff --git a/testsuite/dc_misc_results.txt b/testsuite/dc_misc_results.txt
new file mode 100644
index 000000000..fb321a817
--- /dev/null
+++ b/testsuite/dc_misc_results.txt
@@ -0,0 +1,20 @@
+0
+198202389.289374
+2
+Hello, World!
+4
+5
+5
+4
+Hello, World!
+2
+198202389.289374
+0
+4
+5
+Hello, World!
+2
+198202389.289374
+0
+0
+0
diff --git a/testsuite/dc_modexp.dc b/testsuite/dc_modexp.dc
new file mode 100644
index 000000000..a6afb9985
--- /dev/null
+++ b/testsuite/dc_modexp.dc
@@ -0,0 +1,103 @@
+0 0 1|pR
+1 0 1|pR
+1 0 2|pR
+0 10 1|pR
+1 293 1|pR
+1 2789365 2|pR
+100 8 7|pR
+10922384 15031007 201|pR
+3346529 189 254|pR
+4113416930 197 14|pR
+7709 5887 111|pR
+5487406 3252 128|pR
+2080527 2279453822 219|pR
+48895 50678 232|pR
+1535808383 2902995144 18|pR
+8437837 2882198 69|pR
+35363 25806 2|pR
+3221177403 1560419989 189|pR
+227 42775 163|pR
+2811398069 37500 173|pR
+15046850 3859895697 195|pR
+15770756 3621999893 119|pR
+6937927 3719297189 183|pR
+12573 43819 209|pR
+42098463 7584603 136|pR
+8656683 1328292415 226|pR
+209 81 157|pR
+141 13317429 26|pR
+809485795 60745 101|pR
+4882 1388217898 38|pR
+750704 78 119|pR
+668879580 2888860497 179|pR
+1152725844 15295742 154|pR
+16160694 8981529 154|pR
+216 102 3|pR
+3691227289 5344109 232|pR
+2195559299 61 222|pR
+2478990626 13007440 30|pR
+45083 44 117|pR
+224 55824 53|pR
+1372700133 89 94|pR
+205 10422 48|pR
+11887 12 73|pR
+5955 24353 114|pR
+1201697310 789722419 6|pR
+56577 231 229|pR
+96 38841 189|pR
+6529661 5636520 209|pR
+11005 15955685 27|pR
+9709 231 132|pR
+59790 1034579699 166|pR
+47892 14536879 79|pR
+48 208 21|pR
+33036 3877 65|pR
+164 6527085 249|pR
+12146850 224 37|pR
+218 16425679 62|pR
+51 27641 95|pR
+3076735605 49154 32|pR
+515652717 4117874315 143|pR
+300672671 720768884 110|pR
+9422066 206 5|pR
+43 97 13|pR
+545174510 65319 126|pR
+3317462730 704990271 51|pR
+47316 23231 202|pR
+7236571 4379567 106|pR
+2584584521 2459274189 29|pR
+61562 5035178 178|pR
+65302 112 151|pR
+63040 2168854052 213|pR
+9039611 2370306559 62|pR
+16414384 1020652061 83|pR
+7491 3853569905 172|pR
+1180322494 46670 84|pR
+3823343557 3865107254 127|pR
+6240872 55335 39|pR
+2281401897 1098411 251|pR
+61 2949190429 231|pR
+8981024 162 43|pR
+1 3568883218 212|pR
+4217100969 3471787779 8|pR
+3232237 13 243|pR
+29280 3972452706 100|pR
+13077 6431923 216|pR
+104 3098510775 140|pR
+9503298 174 242|pR
+3424695712 12184 23|pR
+184 15066347 151|pR
+2935856 14003205 184|pR
+1386637762 2128151420 71|pR
+154 11960656 12|pR
+743976432 4004778779 136|pR
+3909160595 3575680922 21|pR
+26133 3580 147|pR
+409154 170 68|pR
+149 55629 40|pR
+5753 13776176 32|pR
+3831447473 658273178 98|pR
+1527252003 2300622 207|pR
+3363824553 8244645 215|pR
+20 145 101|pR
+4005077294 2196555621 94|pR
diff --git a/testsuite/dc_modexp_results.txt b/testsuite/dc_modexp_results.txt
new file mode 100644
index 000000000..5bf0f146e
--- /dev/null
+++ b/testsuite/dc_modexp_results.txt
@@ -0,0 +1,103 @@
+1
+1
+1
+0
+0
+1
+4
+74
+1
+0
+98
+0
+72
+1
+1
+1
+1
+108
+36
+52
+65
+8
+181
+22
+7
+123
+93
+21
+17
+20
+1
+108
+58
+22
+0
+105
+161
+16
+40
+15
+45
+25
+64
+69
+0
+225
+27
+1
+22
+73
+92
+38
+15
+16
+173
+33
+32
+21
+25
+109
+71
+1
+4
+62
+15
+90
+29
+5
+40
+84
+40
+53
+8
+31
+64
+44
+14
+13
+145
+1
+1
+1
+76
+0
+189
+104
+192
+9
+119
+56
+45
+4
+32
+16
+135
+4
+29
+1
+49
+0
+128
+6
+18
diff --git a/testsuite/dc_modulus.dc b/testsuite/dc_modulus.dc
new file mode 100644
index 000000000..613944b20
--- /dev/null
+++ b/testsuite/dc_modulus.dc
@@ -0,0 +1,70 @@
+20k
+1 1%pR
+2 1%pR
+16 4%pR
+15 4%pR
+17 4%pR
+2389473 5%pR
+39240687239 1%pR
+346728934 23958%pR
+3496723859067234 298375462837546928347623059375486%pR
+_1 1%pR
+_2 1%pR
+_47589634875689345 37869235%pR
+_1274852934765 2387628935486273546%pR
+_6324758963 237854962%pR
+1 _1%pR
+2 _1%pR
+2 _2%pR
+2 _3%pR
+16 5%pR
+15 5%pR
+14 5%pR
+89237423 _237856923854%pR
+123647238946 _12467%pR
+_1 _1%pR
+_2 _1%pR
+_2 _2%pR
+_2 _3%pR
+_13 _7%pR
+_14 _7%pR
+_15 _7%pR
+_12784956 _32746%pR
+_127849612 _23712347682193%pR
+0k
+1 1%pR
+2 1%pR
+16 4%pR
+15 4%pR
+17 4%pR
+2389473 5%pR
+39240687239 1%pR
+346728934 23958%pR
+3496723859067234 298375462837546928347623059375486%pR
+_1 1%pR
+_2 1%pR
+_47589634875689345 37869235%pR
+_1274852934765 2387628935486273546%pR
+_6324758963 237854962%pR
+1 _1%pR
+2 _1%pR
+2 _2%pR
+2 _3%pR
+16 5%pR
+15 5%pR
+14 5%pR
+89237423 _237856923854%pR
+123647238946 _12467%pR
+_1 _1%pR
+_2 _1%pR
+_2 _2%pR
+_2 _3%pR
+_13 _7%pR
+_14 _7%pR
+_15 _7%pR
+_12784956 _32746%pR
+_127849612 _23712347682193%pR
+_3191280681 641165986%pR
+0k _899510228 _2448300078.40314%pR
+0k _7424863 _207.2609738667%pR
+0k 3769798918 0.6%pR
diff --git a/testsuite/dc_modulus_results.txt b/testsuite/dc_modulus_results.txt
new file mode 100644
index 000000000..7d718d22a
--- /dev/null
+++ b/testsuite/dc_modulus_results.txt
@@ -0,0 +1,68 @@
+0
+0
+0
+0
+0
+0
+0
+.00000000000000002026
+2747189239559.46904933397471305894
+0
+0
+-.00000000000011057855
+-.00076922992566770712
+-.00000000000050364144
+0
+0
+0
+.00000000000000000002
+0
+0
+0
+.00000000070585524350
+.00000000000000002898
+0
+0
+0
+-.00000000000000000002
+-.00000000000000000005
+0
+-.00000000000000000002
+-.00000000000000011722
+-.00000002640923745817
+0
+0
+0
+3
+1
+3
+0
+8758
+3496723859067234
+0
+0
+-8236960
+-1274852934765
+-140529951
+0
+0
+0
+2
+1
+0
+4
+89237423
+6692
+0
+0
+0
+-2
+-6
+0
+-1
+-14016
+-127849612
+-626616737
+-899510228.00000
+-153.1331732059
+.4
diff --git a/testsuite/dc_multiply.dc b/testsuite/dc_multiply.dc
new file mode 100644
index 000000000..1f9041d06
--- /dev/null
+++ b/testsuite/dc_multiply.dc
@@ -0,0 +1,42 @@
+0 0*pR
+0.000 0*pR
+1 0*pR
+0 1*pR
+0 2498752389672835476*pR
+873246913745129084576134 0*pR
+1 472638590273489273456*pR
+12374861230476103672835496 1*pR
+1 1*pR
+2 1*pR
+1 2*pR
+2 2*pR
+3 14*pR
+17 8*pR
+1892467513846753 1872439821374591038746*pR
+328962735862.2973546835638947635 1728465791348762356*pR
+38745962374538.387427384672934867234 0.1932476528394672837568923754*pR
+9878894576289457634856.2738627161689017387608947567654 37842939768237596237854203.29874372139852739126739621793162*pR
+_1 1*pR
+_1 2*pR
+78893457 _34876238956*pR
+235678324957634 _0.2349578349672389576*pR
+_12849567821934 12738462937681*pR
+1274861293467.927843682937462 _28935678239*pR
+2936077239872.12937462836 _0.012842357682435762*pR
+2387692387566.2378569237546 _272189345628.123875629835876*pR
+0.012348629356782835962 _23487692356*pR
+0.4768349567348675934 _0.23756834576934857638495*pR
+0.98748395367485962735486 _4675839462354867.376834956738456*pR
+_321784627934586 _235762378596*pR
+_32578623567892356 _0.32567384579638456*pR
+_35768232346876 _2348672935602387620.28375682349576237856*pR
+_0.2356728394765234 _238759624356978*pR
+_0.2345768212346780 _0.235768124697074385948943532045*pR
+_0.370873860736785306278630 _7835678398607.7086378076867096270*pR
+_78365713707.7089637863786730 _738580798679306780*pR
+_73867038956790490258249 _0.7379862716391723672803679*pR
+_378621971598721837710387 _98465373878350798.09743896037963078560*pR
+37164201 2931559660*pR
+679468076118972457796560530571.46287161642138401685 93762.2836*pR
+.000000000000000000000000001 .0000000000000000000000001*pR
+239 289 _98 .8937 _.1893 28937*****pR
diff --git a/testsuite/dc_multiply_results.txt b/testsuite/dc_multiply_results.txt
new file mode 100644
index 000000000..9666059a5
--- /dev/null
+++ b/testsuite/dc_multiply_results.txt
@@ -0,0 +1,43 @@
+0
+0
+0
+0
+0
+0
+472638590273489273456
+12374861230476103672835496
+1
+2
+2
+4
+42
+136
+3543531533584430580556128344529291738
+568600835566479683035874339053.4411638427543228060
+7487566285885.8557453089005171423976251098
+373846412427291014394738378015501363938345620046.7869650248829232267\
+2297002026819
+-1
+-2
+-2751507058396910892
+-55374468980751.0837656919743223184
+-163683743464924630346895054
+-36888976187143312550878.567134791289418
+-37706154097.696628262157533781
+-649904428532907022680241.947918694247541
+-290040807.350385412976669306472
+-.11328089187650139309272
+-4617316439035114.40320367843985107357898
+75864709277486862054521256
+10610005628108234.92015040406042336
+84007879267445533366251128067927.91168012197674537856
+56269158624557.1027018519702852
+.055305737239900889424090264801
+2906048299183.472237078104362540110129
+57879411419313585866282299201.3825582163029400
+54512860676747314187949.9414724679950990587298071
+37281153992026463004361915151761464058058.54968338992209002720
+108949072447731660
+63708478450213482928510139572007971.83536929222529239687
+0
+33137343861.8586
diff --git a/testsuite/dc_power.dc b/testsuite/dc_power.dc
new file mode 100644
index 000000000..b58ae0cbc
--- /dev/null
+++ b/testsuite/dc_power.dc
@@ -0,0 +1,45 @@
+20k
+0 0^pR
+0 1^pR
+0 1894^pR
+1 0^pR
+39746823 0^pR
+0.238672983047682 0^pR
+18394762374689237468.97354862973846 0^pR
+1 1^pR
+2 1^pR
+18927361346 1^pR
+0.23523785962738592635777 1^pR
+328956734869213746.89782398457234 1^pR
+8937 98^pR
+0.124876812394 2396^pR
+93762.2836 13^pR
+1 _1^pR
+2 _1^pR
+10 _1^pR
+683734768 _1^pR
+38579623756.897937568235 _1^pR
+1 _32467^pR
+2 _53^pR
+23897 _213^pR
+_1 1^pR
+_1 2^pR
+_2 1^pR
+_2 2^pR
+_237 294^pR
+_3746 28^pR
+_0.3548 35^pR
+_4267.234 37^pR
+_326.3246 78^pR
+_1 _1^pR
+_1 _2^pR
+_2 _1^pR
+_2 _2^pR
+_237 _293^pR
+_784 _23^pR
+_86 _7^pR
+_0.23424398 _781^pR
+_178.234786 _879^pR
+_1274.346 _768^pR
+0 _251^pR
+_0.2959371298 227^pR
diff --git a/testsuite/dc_power_results.txt b/testsuite/dc_power_results.txt
new file mode 100644
index 000000000..997f44f59
--- /dev/null
+++ b/testsuite/dc_power_results.txt
@@ -0,0 +1,73 @@
+1
+0
+0
+1
+1
+1
+1
+1
+2
+18927361346
+.23523785962738592635777
+328956734869213746.89782398457234
+16473742664221279051571200630760751138799221376964991600670000200609\
+08006052596520320731708604393844468006290371918262741885989163144389\
+39367835091560809036359941703341471396407660150658436796925310445979\
+21333166245765946557344383284626113908419359990042883048537750217279\
+17481980123593363177308481941550382845381799410533956718500484099889\
+610805653325917409549921909941664118421333562129
+0
+43287877285033571298394739716218787350087163435619825150259705419.98\
+016445740928054425
+1.00000000000000000000
+.50000000000000000000
+.10000000000000000000
+.00000000146255543348
+.00000000002592041867
+1.00000000000000000000
+.00000000000000011102
+0
+-1
+1
+-2
+4
+14997322375665265051328725757939209353051902095893907150382724666290\
+49749481660976421019742616298227588464420182758442163654172400528243\
+00885441207762486233574213374503090372518590691583139696652847404883\
+08573912261119588874308960204159666762789603037188471170006223907416\
+60492840269152716750700089148882139254399347568222390231015487895905\
+73727080561379177721440905866857248917982113340543176658480139248897\
+54802503253413282808814063861470711399810899724515727713334909764746\
+27910290211411231279325882505708287941671508154740003122373284699097\
+78346501539634198926772266511968381368929692275950529960923432771985\
+12597189390708050983487158873301681237787429436264801751664042999180\
+3448659818912436089
+11478830555358864333472551120140548480416206583184496764727387456058\
+792742209537931243951391229607936
+-.00000000000000017759
+-2067373624686414405470850679965010694114490999957199847684803894306\
+56243666149296582304582679590231948238805965642713928910384741502707\
+.23224479257866798694
+11606078892843496082360561256965139908586179418605021706789617179085\
+85768049299693425729565480314913006780973928345684673490252494674985\
+0186164225375953066263609289359900615361965737717208159874390.293769\
+70206344604971
+-1.00000000000000000000
+1.00000000000000000000
+-.50000000000000000000
+.25000000000000000000
+0
+0
+-.00000000000002874159
+-1945134149489344891879057554905782841936258356736314337975569799825\
+94091939572752348215929683891336730843553721422164737465108229034947\
+87333189564755763444242676978610321731298729194092653999616928308494\
+26419468484566422775668903315088810746121307679948574976162519479931\
+18935243698160094347216562490000767121041786977792546155155934655909\
+14123833869470494708767968978717730012864171105540029928688274136791\
+98175053824022144065005509214813689232148489884560100200475909009813\
+340098100705258138.98542904577525702068
+0
+0
+0
+0
diff --git a/testsuite/dc_sqrt.dc b/testsuite/dc_sqrt.dc
new file mode 100644
index 000000000..7c13fdd0b
--- /dev/null
+++ b/testsuite/dc_sqrt.dc
@@ -0,0 +1,14 @@
+20k
+0vpR
+2vpR
+4vpR
+9vpR
+16vpR
+25vpR
+121vpR
+48765vpR
+9287356207356vpR
+0.189274385967238956872354vpR
+12389467137496823.134567829387456283946vpR
+.0000000000000000000000000000123vpR
+1vpR
diff --git a/testsuite/dc_sqrt_results.txt b/testsuite/dc_sqrt_results.txt
new file mode 100644
index 000000000..5ded8c294
--- /dev/null
+++ b/testsuite/dc_sqrt_results.txt
@@ -0,0 +1,13 @@
+0
+1.41421356237309504880
+2.00000000000000000000
+3.00000000000000000000
+4.00000000000000000000
+5.00000000000000000000
+11.00000000000000000000
+220.82798735667542192643
+3047516.39985021245496456781
+.435056761776252544285578
+111307983.260397019622398608908
+.0000000000000035071355833500363
+1.00000000000000000000
diff --git a/testsuite/dc_strings.dc b/testsuite/dc_strings.dc
new file mode 100644
index 000000000..2f6b38d88
--- /dev/null
+++ b/testsuite/dc_strings.dc
@@ -0,0 +1,37 @@
+[Hello, World!]ZpR
+[Hello, World!]pR
+[Hello, \[ World!]ZpR
+[Hello, \[ World!]pR
+[Hello, \] World!]ZpR
+[Hello, \] World!]pR
+[30pR]
+[29pR]
+[28pR]
+[27pR]
+[26pR]
+[25pR]
+[24pR]
+[23pR]
+[22pR]
+[21pR]
+[20pR]
+[19pR]
+[18pR]
+[17pR]
+[16pR]
+[15pR]
+[14pR]
+[13pR]
+[12pR]
+[11pR]
+[10pR]
+[9pR]
+[8pR]
+[7pR]
+[6pR]
+[5pR]
+[4pR]
+[3pR]
+[2pR]
+[1pR]
+[xz0<x]dsxx
diff --git a/testsuite/dc_strings_results.txt b/testsuite/dc_strings_results.txt
new file mode 100644
index 000000000..d606637cc
--- /dev/null
+++ b/testsuite/dc_strings_results.txt
@@ -0,0 +1,36 @@
+13
+Hello, World!
+16
+Hello, \[ World!
+16
+Hello, \] World!
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
diff --git a/testsuite/dc_subtract.dc b/testsuite/dc_subtract.dc
new file mode 100644
index 000000000..2cb4104fb
--- /dev/null
+++ b/testsuite/dc_subtract.dc
@@ -0,0 +1,33 @@
+0 0-pR
+0 1-pR
+1 0-pR
+1 1-pR
+5 2-pR
+2 9-pR
+321974 12845976238457-pR
+2874519803456710938465 384723854-pR
+10000000000000000000000000000000000000000 999999999999999999999999999999999999999-pR
+10000000000000000000000000000000000000000 9999999999999999999999999999999999999999-pR
+10000000000000000000000000000000000000000 999999999999999999999999999999999999999.99999999999999999999999999999999999-pR
+10000000000000000000000000000000000000000 9999999999999999999999999999999999999999.9999999999999999999999999999999999-pR
+10000000000000000000000000000000000000000 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000001-pR
+10000000000000000000000000000000000000001 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000001-pR
+10000000000000000000000000000000000000000.0000000001 0.0000000000000000000000000000000000000000000000000000000000000000000000000001-pR
+_2 6-pR
+_23784692345 182934721309467230894628735496027345-pR
+_224352354962873059862 _1245723576829456278354960278345-pR
+_3468273598 _12354243-pR
+_0.92345768293 _2354768923-pR
+_712384634.123476823 _24768293376-pR
+_1879234638 _0.917234869234-pR
+_0.9172438692134 _0.971284967124-pR
+_0.1283475123465 _0.937462346-pR
+_124765829346.2837468293562 _0.923467829346-pR
+_12476829385769 _1928476259034.8378629356-pR
+_0.38476284395876345 _94875394587623.2357869324857-pR
+_4674596708467.34754789403674343567 _48672394852354698.237548629345-pR
+979519669 3018100865-pR
+929002449 3280677283-pR
+0 _525898-pR
+3 _3-pR
+2 _1 2893714 _2189367411289 _.8921374 3.9201384----pR
diff --git a/testsuite/dc_subtract_results.txt b/testsuite/dc_subtract_results.txt
new file mode 100644
index 000000000..9f7726254
--- /dev/null
+++ b/testsuite/dc_subtract_results.txt
@@ -0,0 +1,37 @@
+0
+-1
+1
+0
+3
+-7
+-12845975916483
+2874519803456326214611
+9000000000000000000000000000000000000001
+1
+9000000000000000000000000000000000000000.000000000000000000000000000\
+00000001
+.0000000000000000000000000000000001
+9999999999999999999999999999999999999999.999999999999999999999999999\
+99999999999999999999999999999999999999999999999999999999999
+10000000000000000000000000000000000000000.99999999999999999999999999\
+999999999999999999999999999999999999999999999999999999999999
+10000000000000000000000000000000000000000.00000000009999999999999999\
+99999999999999999999999999999999999999999999999999
+-8
+-182934721309467230894628759280719690
+1245723576605103923392087218483
+-3455919355
+2354768922.07654231707
+24055908741.876523177
+-1879234637.082765130766
+.0540410979106
+.8091148336535
+-124765829345.3602790000102
+-10548353126734.1621370644
+94875394587622.85102408852693655
+48667720255646230.89000073530825656433
+-2038581196
+-2351674834
+525898
+6
+-2189370304999.1877242
diff --git a/testsuite/dcx_vars.dc b/testsuite/dcx_vars.dc
new file mode 100644
index 000000000..bbe73b47d
--- /dev/null
+++ b/testsuite/dcx_vars.dc
@@ -0,0 +1,2 @@
+298734.8921702348sx_928374892.28937syzpRlxly+pR
+298734.8921702348S xotj _928374892.28937S yotp zpRl xotj l yotp-pRzpR L xotj L yotp-pR
diff --git a/testsuite/dcx_vars_results.txt b/testsuite/dcx_vars_results.txt
new file mode 100644
index 000000000..6f18e7a84
--- /dev/null
+++ b/testsuite/dcx_vars_results.txt
@@ -0,0 +1,6 @@
+0
+-928076157.3971997652
+0
+928673627.1815402348
+0
+928673627.1815402348