summaryrefslogtreecommitdiffstats
path: root/contrib/bc/Examples
diff options
context:
space:
mode:
authorandreas <andreas@FreeBSD.org>1998-04-29 21:53:01 +0000
committerandreas <andreas@FreeBSD.org>1998-04-29 21:53:01 +0000
commit0ec6169bea8adb8ddbf8f9ce363f6e1803f88621 (patch)
tree1529c15b522fa7bd199b5491bc88817aefc9b779 /contrib/bc/Examples
downloadFreeBSD-src-0ec6169bea8adb8ddbf8f9ce363f6e1803f88621.zip
FreeBSD-src-0ec6169bea8adb8ddbf8f9ce363f6e1803f88621.tar.gz
Import GNU bc 1.04
PR: 4183
Diffstat (limited to 'contrib/bc/Examples')
-rw-r--r--contrib/bc/Examples/ckbook.b16
-rw-r--r--contrib/bc/Examples/pi.b53
-rw-r--r--contrib/bc/Examples/primes.b32
-rw-r--r--contrib/bc/Examples/twins.b40
4 files changed, 141 insertions, 0 deletions
diff --git a/contrib/bc/Examples/ckbook.b b/contrib/bc/Examples/ckbook.b
new file mode 100644
index 0000000..5815ea0
--- /dev/null
+++ b/contrib/bc/Examples/ckbook.b
@@ -0,0 +1,16 @@
+scale=2
+print "\nCheck book program!\n"
+print " Remember, deposits are negative transactions.\n"
+print " Exit by a 0 transaction.\n\n"
+
+print "Initial balance? "; bal = read()
+bal /= 1
+print "\n"
+while (1) {
+ "current balance = "; bal
+ "transaction? "; trans = read()
+ if (trans == 0) break;
+ bal -= trans
+ bal /= 1
+}
+quit
diff --git a/contrib/bc/Examples/pi.b b/contrib/bc/Examples/pi.b
new file mode 100644
index 0000000..0d840cf
--- /dev/null
+++ b/contrib/bc/Examples/pi.b
@@ -0,0 +1,53 @@
+/*
+ This is a program to determine the distribution of digits in the
+ fraction part of PI. It will look at the first scale digits.
+
+ The results are left in the global variable digits.
+ digits[0] is the number of 0's in PI.
+
+ This program requires the math library.
+*/
+
+define pi () {
+ auto ix, pi, save_scale, work;
+
+ save_scale = scale;
+ scale += 5;
+ print "\n\nCalculating PI to ",scale," digits. Please wait . . .";
+ pi = 4*a(1);
+ scale -= 5;
+ work = pi;
+
+ print "\nCounting digits. . .";
+ for (ix = 0; ix < 10; ix++) digits[ix] = 0;
+
+ /* Extract the One's digit from pi. */
+ scale = 0;
+ one_digit = work / 1;
+
+ for (ix = save_scale; ix > 0; ix--) {
+
+ /* Remove the One's digit and multiply by 10. */
+ scale = ix;
+ work = (work - one_digit) / 1 * 10;
+
+ /* Extract the One's digit. */
+ scale = 0;
+ one_digit = work / 1;
+
+ digits[one_digit] += 1;
+ }
+
+ /* Restore the scale. */
+ scale = save_scale;
+
+ /* Report. */
+ print "\n\n"
+ print "PI to ", scale, " digits is:\n", pi/1, "\n\n"
+ print "The frequency of the digits are:\n"
+ for (ix = 0; ix < 10; ix++) {
+ print " ", ix, " - ", digits[ix], " times\n"
+ }
+
+ print "\n\n"
+}
diff --git a/contrib/bc/Examples/primes.b b/contrib/bc/Examples/primes.b
new file mode 100644
index 0000000..2b52ca7
--- /dev/null
+++ b/contrib/bc/Examples/primes.b
@@ -0,0 +1,32 @@
+
+/* An example that finds all primes between 2 and limit. */
+
+define primes (limit) {
+ auto num, p, root, i
+
+ prime[1] = 2;
+ prime[2] = 3;
+ num = 2;
+ if (limit >= 2) print "prime 1 = 2\n"
+ if (limit >= 3) print "prime 2 = 3\n";
+ scale = 0;
+
+ for ( p=5; p <= limit; p += 2) {
+ root = sqrt(p);
+ isprime = 1;
+ for ( i = 1; i < num && prime[i] <= root; i++ ) {
+ if ( p % prime[i] == 0 ) {
+ isprime = 0;
+ break;
+ }
+ }
+ if (isprime) {
+ num += 1;
+ prime [num] = p;
+ print "prime ", num, " = ", p, "\n"
+ }
+ }
+}
+
+
+print "\ntyping 'primes (10)' will print all primes less than 10.\n"
diff --git a/contrib/bc/Examples/twins.b b/contrib/bc/Examples/twins.b
new file mode 100644
index 0000000..de910a7
--- /dev/null
+++ b/contrib/bc/Examples/twins.b
@@ -0,0 +1,40 @@
+
+/* An example that finds all primes between 2 and limit. */
+
+define primes (limit) {
+ auto num, p, root, i
+
+ prime[1] = 2;
+ prime[2] = 3;
+ num = 2;
+ scale = 0;
+
+ for ( p=5; p <= limit; p += 2) {
+ root = sqrt(p);
+ isprime = 1;
+ for ( i = 1; i < num && prime[i] <= root; i++ ) {
+ if ( p % prime[i] == 0 ) {
+ isprime = 0;
+ break;
+ }
+ }
+ if (isprime) {
+ num += 1;
+ prime [num] = p;
+ }
+ }
+}
+
+
+print "\ntyping 'twins (10)' will print all twin primes less than 10.\n"
+
+define twins (limit) {
+ auto i;
+
+ i = primes(limit+2);
+
+ for (i=1; prime[i] > 0; i++) {
+ if ((prime[i]+2) == prime[i+1]) \
+ print "twins are ", prime[i], " and ", prime[i+1], "\n"
+ }
+}
OpenPOWER on IntegriCloud