The Summer of 1978 by James Pate Williams, Jr. BA, BS, MSwE, PhD

I believe in late spring quarter of 1978 Mr. P.M. Hicks, a chemistry and physics professor at LaGrange College, introduced me to a large desktop Texas Instruments programmable calculator. I immediately became immersed in the manual and I learned the rudiments of calculator programming on this machine.

I advanced to LaGrange College’s almost new Data General Eclipse minicomputer in the summer of 1978. I taught myself Dayton BASIC (Beginner’s All-purpose Symbolic Instruction Code) using the book “BASIC Programming” by Paul W. Murrill and Cecil L. Smith which I still own a copy and it is copyrighted 1971. I seem to recall I special ordered the textbook from the LaGrange College library. This self-study put me many steps in front of my peers in the Fall Quarter of 1978 when I took a course under Professor Kenneth Cooper on BASIC programming. I taught Professor Cooper how to perform matrix and vector calculations using the Data General BASIC interpreter.

I also was taking my first course in physical chemistry in the fall of 1978. During the week of Monday, November 6, 1978 my physical chemistry partner Chuck H. Pitts (now Dr. Chuck H. Pitts, a prominent dentist in LaGrange, GA) did an experiment whose lab report title was “Determination of Molecular Size and Avogadro’s Number”. I seem to recall the division of labor was that I perform the calculations with the aid of a BASIC computer program. Then Chuck and I would write up the experiment and I believe someone in the Callaway Foundation office or Chuck did the actual typing of the document at the Callaway Foundation office on Broome Street in LaGrange, GA. Well it took a lot of persuasion by Chuck to get me to do my part since back in that era I was prone to destructive perfectionism. (Incidentally, I did not give up on being a perfectionist until Professor Felton at Georgia Tech in 1981 stated categorically “There is no room for perfectionism in science.”)

The Winter Quarter of 1979 I took a FORTRAN (Formula Translator) IV course under Professor Kenneth Cooper. That quarter I also had Professor Cooper for Physical Chemistry II and Biochemistry. I did well in the computer programming course, and I can remember helping several fellow students to pass the course. Professor Brooks Shelhorse then of the Mathematics Department was one of my fellow classmates that I tutored. Biochemistry was an 8:00 AM course. I spent a lot of late nights in the computer lab, so I would sometimes fall asleep during the biochemistry lectures. I distinctly remember Dr. Cooper hurling an eraser near me to wake me up one morning. I made B’s in the two chemistry courses.

Spring Quarter of 1979 was my final quarter as a chemistry student at LaGrange College. I took Quantitative Analysis II, an Independent Study in Chemistry, General Physics III, and Angling. I made all A’s that quarter. The independent study was an introductory course to architecture and programming of the Intel 8085 microprocessor. Dr. Cooper in his time as a computer engineering student at Auburn University had built two very nice and unique computers, a rather large analog computer and a digital computer that consisted of an Intel 8085 microprocessor in a wooden box with hexadecimal keypad, two seven segment red light emitting diode displays, EEPROM, and RAM memory.  I used the digital computer in my independent study. Professor Cooper taught me about the instruction set for the microprocessor and I would hand assemble my assembly language programs into two hexadecimal digit strings of machine code and manually enter the machine code via the keypad. One of my first assignments was to count down from 0xFF = 255 decimal to 0x00 = 0 decimal. I had a delay of about a ¼ second built into the program, so it took me one minute and four seconds to count down to zero. I was the only student in my independent study, therefore, it sometimes felt funny to have Professor Cooper give a whole one-hour lecture to an audience of one.

I bought the IBM book “Sorting and Sort Systems” by Harold Lorin in the summer of 1979. I proceeded to implement most of the sorting and merge algorithms in the book. I first translated the IBM PL/I (Programming Language I) code to BASIC and later for FORTRAN IV. Professor Cooper had developed a large BASIC program for the LaGrange College Registrar. This program used a slow sorting algorithm which was either Shell sort of Bubble sort. I implemented a very fast sorting algorithm named Singleton’s sort in BASIC and was able to dramatically cut the time required to sort all the students by their Social Security Administration numbers which many colleges and universities then used as their primary flat-file or database key. I also began teaching myself the Data General Advanced Operating System (AOS) macro-assembly language. Like many computer programmers before I became infatuated with all the control over an operating system that assembly language afforded a knowledgeable programmer.

FORTRAN Singleton’s Sort

I convinced my parents to pay for me to audit Calculus and Analytic Geometry IV under Professor Shelhorse during the Fall Quarter of 1979, so I would have an excuse to be on campus to use my favorite computer, the LaGrange College Data General Eclipse minicomputer. That quarter I re-implemented my fast sorting algorithm in assembly language and set a new sorting time record with a program that sorting about 1000 student data records. Since the code was in AOS macro-assembly language it could not be readily integrated with the existing registrar’s system.

In 1980 I bummed around the college using the computer system until I was accepted to chemistry graduate school at the Georgia Institute of Technology for the Fall Quarter of 1980. I taught myself Data General Pascal and further my work with macro-assembly language, BASIC, and FORTRAN IV in the Winter, Spring, and Summer Quarters of 1980 at LaGrange College. I was unpaid computer programming teaching assistant for those three quarters which allowed me to earn my keep so to speak.

Poker Hand Statistics by James Pate Williams, Jr. BA, BS, MSwE, PhD

I wrote a Microsoft C# computer program to experimentally calculate poker hand probabilities:

Poker Hands

As you can easily discern there are ten probabilities from Royal Flush down to High Card. I am worried about % Error of the Straight case. I used 10 * C(52, 5) = 10 * 2598960 samples to determine the calculated approximate poker hand probabilities.

2nd Lt James “Jim” William Jordan’s World War II Missions by James Pate Williams, Jr. BA, BS, MSwE, PhD

My uncle was James “Jim” William Jordan who was born on September 5, 1920 and died January 27, 1970 at the relatively young age of 49 years old. He was born in Randolph County Alabama to Charles Webster Jordan and Ida Jane Kenady Jordan. His dad was at the time of his birth a postal clerk and his mother was trained as a school teacher but was a stay at home mom.

In early 1945 my uncle was stationed at Murtha Strip, Mindoro in the Philippines Islands. My uncle was a 2nd Lt. regular bombardier in a Consolidated B-24 Liberator heavy bomber. My uncle was in 1st Lt Robert R. Ferguson’s Aircrew Number 86 in the 530th Bombardment Squadron of the 380th Bombardment Group of the 310th Bomb Wing of the V Bomber Command of the 5th Air Force of the United States Army Air Forces (USAAF). Using the information which I received from the United States Air Force Historical Research Agency (AFHRA) Reel B0369 that contains the Histories of the 380th Bombardment Group for the year 1945 I found mission boards for twelve missions flown by 1st Lt Ferguson in the months April through June 1945. The mission boards are given below:

Mission Board Plate 0273Mission Board Plate 0292Mission Board Plate 0308Mission Board Plate 0329Mission Board Plate 0346Mission Board Plate 0354Mission Board Plate 0476Mission Board Plate 0501Mission Board Plate 0643Mission Board Plate 0661Mission Board Plate 0681Mission Board Plate 0701

The following information is from AFHRA Reel A0636A which contains the 530th Bombardment Squadron Histories for June, July and August 1945.

June 1945 Bombing Mission Map RedactedJune 1945 Plate 102 RedactedJune 1945 Plate 103June 1945 Plate 104Overview of Ditching Plate 0030 RedactedOverview of Ditching Plate 0031 RedactedJune 1945 Plate 105June 1945 Plate 106June 1945 Plate 107June 1945 Plate 108June 1945 Plate 099July 1945 plate 231July 1945 plate 232

Classical Shor’s Algorithm Versus J. M. Pollard’s Factoring with Cubic Integers

We tried to factor the following numbers with each algorithm: 11^3+2, 2^33+2, 5^15+2, 2^66+2, 2^72+2, 2^81+2, 2^101+2, 2^129+2, and 2^183+2. Shor’s algorithm fully factored all of the numbers. Factoring with cubic integers fully factored all numbers except 2^66+2, 2^71+2, 2^129+2, and 2^183+2.

cs1cubiccs1shor

cs2cubiccs2shor

cs3cubiccs3shor

cs4cubiccs4shor

cs5cubiccs5shor

cs6cubiccs6shor

cs7cubiccs7shor

cs8cubiccs8shor

cs9cubiccs9shor

Typical full output from factoring with cubic integers:

A-Solutions = 973
B-Solutions = 234
Known Eqs = 614
Solutions = 1821
Rows = 1821
Columns = 1701
Kernel rank = 423
Sieved = 326434
Successes0 = 200863
Successes1 = 47073
Successes2 = 2708
Successes3 = 973
Successes4 = 1735

2417851639229258349412354 - 25 DDs

2 p
65537 p
414721 p
44479210368001 p

Sets = 189
#Factor Base 1 = 501
#Factor Base 2 = 868

FactB1 time = 00:00:00.000
FactB2 time = 00:00:05.296
Sieve time  = 00:00:17.261
Kernel time = 00:00:06.799
Factor time = 00:00:02.327
Total time  = 00:00:31.742

A-solutions have no large prime. B-solutions have a large prime between B0 and B1 exclusively which is this case is between 3272 and 50000 exclusively. The known equations are between the rational primes and the cubic primes and their associates of the form p = 6k + 1 that have -2 as a cubic residue. There are 81 rational primes of the form and 243 cubic primes but we keep many other associates of the cubic primes so more a and b pairs are successfully algebraically factored. In out case the algebraic factor base has 868 members. The rational prime factor base also includes the negative unit -1. The kernel rank is the number of independent columns in the matrix. The number of dependent sets is equal to columns – rank which is this case 1701 – 423 = 1278. The number of (a, b) pairs sieved is 326434. Successes0 is the pairs that have gcd(a, b) = 1. Successes1 is the number of (a, b) pairs such that a+b*r is B0-smooth or can be factored by the first 500 primes and the negative unit. r is equal to 2^27. Successes2 is the number of (a, b) pairs whose N[a, b] = a^2-2*b^3 can be factored using the norms of the algebraic primes. Successes3 is the number of A-solutions that are algebraically and rationally smooth. Successes4 is the number of B-solutions without combining to make the count modulo 2 = 0. Successes3 + Successes4 should equal Successes2 provided all proper algebraic primes and their associates are utilized.

Note factoring with cubic integers is very fickle with respect to parameter choice.

Cubic Integers

The following text is based upon Appendix 5 “Higher Algebraic Number Fields” found in the book “Prime Numbers and Computer Methods for Factorization” by Hans Riesel. Cubic integers are algebraic numbers of the form [a, b, c] which is a short hand for a + b * z + c * z * z where z is the cube root of -2. we have z * z * z = z ^ 3 = -2 and z ^ 4 = -2 * z. The numbers a, b, and c are rational integers in Z. The product of two cubic integers is also a cubic integer (expansion of equation A5.8):

[a, b, c] * [d, e, f] = (a + b * z + c * z * z) * (d + e * z + f * z * z) = a * d + a * e * z + a * f * z * z + b * d * z + b * e * z * z + b * f * z * z * z + c * d * z * z + c * e * z * z * z + c * f * z * z * z * z = a * d – 2 * b * f – 2 * c * e + (a * e + b * d – 2 * c * f) * z + (a * f + b * e + c * d) * z * z = [ a * d – 2 * b * f – 2 * c * e , a * e + b * d – 2 * c * f , a * f + b * e + c * d ]

The defining equation for z is z^3 + 2 = 0. The other two roots of the polynomial f(z) = z^3 + 2 are the complex conjugates z[2] = z * (-1 + i * SQR(3)) / 2 and z[3] = z * (-1 – i * SQR(3)) / 2, where SQR(x) is the square root function such that x = SQR(x) * SQR(x) and i = SQR(-1), the imaginary unit. z[2] and z[3] are complex numbers of the form w = u + i * v, where u is the real part and v is the imaginary part. Let o = (-1 + i * SQR(3)) / 2. z[2] = o * z and z[3] = o * o * z.

Q(z) is a field and the integers of the field form Z(z) which is a ring. The norm of the cubic integer [a, b, c] is (expansion of equation A5.7):

N[a, b, c] = (a + b * z + c * z * z) * (a + b * o * z + c * o * o * z * z) * (a + b * o * o * z + c * o * z * z) = a ^ 3 – 2b ^ 3 + 4 * c ^ 3 + 6 * a * b * c

I wrote a computer application in C# to recreate the results of Appendix 5. Below is a screen shot of the application’s form:

riesel

I reproduce the units table of page 300 below:

Positive Units

[        1,        0,        0,        1]              1
[ 1, 1, 0, 1] -1
[ 1, 2, 1, 1] 1
[ -1, 3, 3, 1] -1
[ -7, 2, 6, 1] 1
[ -19, -5, 8, 1] -1
[ -35, -24, 3, 1] 1
[ -41, -59, -21, 1] -1
[ 1, -100, -80, 1] 1
[ 161, -99, -180, 1] -1
[ 521, 62, -279, 1] 1
[ 1079, 583, -217, 1] -1
[ 1513, 1662, 366, 1] 1

Negative Units

[       -1,        0,        0,       -1]             -1
[ -1, 1, -1, -1] -1
[ 5, -4, 3, -1] 1
[ -19, 15, -12, -1] -1
[ 73, -58, 46, -1] 1
[ -281, 223, -177, -1] -1
[ 1081, -858, 681, -1] 1
[ -4159, 3301, -2620, -1] -1
[ 16001, -12700, 10080, -1] 1
[ -61561, 48861, -38781, -1] -1
[ 236845, -187984, 149203, -1] 1
[ -911219, 723235, -574032, -1] -1
[ 3505753, -2782518, 2208486, -1] 1

The pertinent factorization of the cubic integer prime numbers less than 300 are given next:

Case 1

[        1,        0,        1,        5]              5
[ -1, -1, 1, 11] 11
[ 1, -2, 0, 17] 17
[ 3, 0, -1, 23] 23
[ 3, -1, 0, 29] 29
[ 1, -3, 1, 41] 41
[ 3, 1, 1, 47] 47
[ -1, -3, 0, 53] 53
[ 3, 0, 2, 59] 59
[ -1, -2, 2, 71] 71
[ 3, -2, -2, 83] 83
[ 1, -2, 3, 89] 89
[ -3, -4, 0, 101] 101
[ -1, 0, 3, 107] 107
[ 1, -4, 2, 113] 113
[ 3, -3, -1, 131] 131
[ -3, -1, 3, 137] 137
[ 1, -4, -1, 149] 149
[ -3, -3, 2, 167] 167
[ 3, -5, 4, 173] 173
[ 5, -3, 0, 179] 179
[ -1, 2, 4, 191] 191
[ 5, -2, -1, 197] 197
[ 3, 2, 3, 227] 227
[ 5, 0, 3, 233] 233
[ 1, -3, 4, 239] 239
[ 1, -5, 0, 251] 251
[ 1, 0, 4, 257] 257
[ 3, -4, -3, 263] 263
[ 1, -5, 3, 269] 269
[ -1, -1, 4, 281] 281
[ -3, -6, -1, 293] 293

Case 2

[       -1,        0,        2,       31]             31
[ 3, 0, 1, 31] 31
[ -1, -2, 1, 31] 31
[ 1, 1, 2, 43] 43
[ 3, -1, -1, 43] 43
[ 3, -2, 0, 43] 43
[ 1, 0, 3, 109] 109
[ 1, -4, 1, 109] 109
[ 5, 2, 0, 109] 109
[ -1, -4, 0, 127] 127
[ -1, -1, 3, 127] 127
[ 5, -1, 0, 127] 127
[ 5, 1, 1, 157] 157
[ 5, 0, 2, 157] 157
[ 3, -3, -2, 157] 157
[ 3, -4, -1, 223] 223
[ -3, -5, 0, 223] 223
[ 1, -5, 2, 223] 223
[ -1, 1, 4, 229] 229
[ -3, 0, 4, 229] 229
[ 5, -2, -2, 229] 229
[ 1, -5, -1, 277] 277
[ 3, -5, 0, 277] 277
[ -3, -4, 2, 277] 277
[ -1, -5, 1, 283] 283
[ 3, 0, 4, 283] 283
[ 5, 3, 2, 283] 283

Case 3

[        0,        1,        0,        2]             -2

Case 4

[       -1,        1,        0,        3]             -3

I reproduce the factorization of the norms of [a, b, 0] found on page 303 are given below:

[       59,       46,        0,        1]          10707
[ -1, -2, -1, 1] -1
[ -1, 1, 0, 3] -3
[ 1, 1, 2, 43] 43
[ 3, -2, -2, 83] 83

[ 59, 48, 0, 1] -15805
[ -1, 3, 3, 1] -1
[ 1, 0, 1, 5] 5
[ 3, -1, 0, 29] 29
[ 1, -4, 1, 109] 109

[ 61, 48, 0, 1] 5797
[ 1, -3, -3, 1] 1
[ -1, -1, 1, 11] 11
[ 1, -2, 0, 17] 17
[ 3, 0, 1, 31] 31

[ 62, 47, 0, 1] 30682
[ 1, 1, 0, 1] -1
[ 0, 1, 0, 2] -2
[ 3, 0, -1, 23] 23 ^ 2
[ 3, -1, 0, 29] 29

[ 62, 49, 0, 1] 3030
[ 1, -3, -3, 1] 1
[ 0, 1, 0, 2] -2
[ -1, 1, 0, 3] -3
[ 1, 0, 1, 5] 5
[ -3, -4, 0, 101] 101

[ 63, 50, 0, 1] 47
[ 19, 5, -8, 1] 1
[ 3, 1, 1, 47] 47

[ 64, 47, 0, 1] 54498
[ -1, -1, 0, 1] 1
[ 0, 1, 0, 2] -2
[ -1, 1, 0, 3] -3
[ -1, 0, 2, 31] 31
[ -3, -6, -1, 293] 293

[ 65, 53, 0, 1] -23129
[ 1, 1, 0, 1] -1
[ -3, -4, 0, 101] 101
[ -3, 0, 4, 229] 229

[ 66, 53, 0, 1] -10258
[ 1, 2, 1, 1] 1
[ 0, 1, 0, 2] -2
[ 3, 0, -1, 23] 23
[ 3, -4, -1, 223] 223

[ 67, 53, 0, 1] 3009
[ 7, -2, -6, 1] -1
[ -1, 1, 0, 3] -3
[ 1, -2, 0, 17] 17
[ 3, 0, 2, 59] 59

[ 1693, 749, 0, 1] 4012180059
[ -1, -2, -1, 1] -1
[ -1, 1, 0, 3] -3
[ 3, -2, 0, 43] 43
[ 5, 0, 2, 157] 157
[ 7, -3, 0, 397] 397
[ 5, 1, 4, 499] 499

The last factorization is from “The Development of the Number Field Sieve” edited by A. K. Lenstra and H. W. Lenstra, Jr. containing the paper “Factoring with Cubic Integers” by J. M. Pollard page 10.

 

Classical Shor’s Algorithm

Shor’s algorithm is a fast method of factoring integers using a quantum computer:

https://en.wikipedia.org/wiki/Shor%27s_algorithm

I have implemented the algorithm classically and performed a few experiments on integers greater than equal 12. I used Floyd’s cycle finding algorithm as implemented with a randomized Pollard’s Rho Factoring method using two second degree polynomials:

https://en.wikipedia.org/wiki/Pollard%27s_rho_algorithm

I factored the seventh Fermat number in less than nine minutes. J. M. Pollard factored this number in 20.1 hours in 1988 using the special number field sieve [see “Lecture Notes in Mathematics 1554 The Development of the Number Field Sieve” edited by A. K. Lenstra and H. W. Lenstra, Jr. The paper by Pollard is entitled “Factoring with Cubic Integers”]. Both Pollard and I used personal computers.

Suppose Moore’s original law is applied to Pollard’s factoring of the seventh Fermat number and also assume computing time is cut in half every two years then we can compute the following table:

A less optimistic table states that the computation time is halved every four years:

I successfully factored 38 of 39 numbers of the form 12, 123, 1234, 12345, … , 1234567890123456789012345678901234567890. The results of my factoring C# Windows form application are displayed below:

I was eventually able to factor the 38-decimal digit number that failed in the above calculation as illustrated below:

The number of bits per number varied from 4-bits to 130-bits. This is still no where near the ability to factor a 3,000-bit Rivest-Shamir-Adleman composite integer so most financial systems remain secure. The link below will take you to the Microsoft C# project directory on my OneDrive account.

https://1drv.ms/f/s!AjoNe9CiN2M9gfMbQ8H_g3GMQEC6iA

The C# source code is at the preceding link in a printable and readable PDF.

Global Primary Greenhouse Gas Concentrations by James Pate Williams Jr BA, BS, MSwE, PhD

I designed and implemented a C# computer language application to model the global greenhouse gas concentrations data found on the NOAA website:

https://www.esrl.noaa.gov/gmd/aggi/aggi.html

I used the latest recommended data for time period 1979 to 2017. The concentrations of three greenhouse gases were modeled: carbon dioxide (CO2), methane (CH4), and nitrous oxide (N2O).

The empirical modeling paradigm I used was simple linear regression. My model goes out to the year 2300. The key formulas used by the model are:

                                Simple Linear Regression Parameters

See the website:

https://en.wikipedia.org/wiki/Simple_linear_regression

Some plots of the concentrations in parts per million (PPM) and parts per billion (PPB) are given below.

                                                Carbon Dioxide Concentration in Parts Per Million
                                                        Methane Concentration in Parts Per Billion
                                                 Nitrous Oxide Concentration in Parts Per Billion
                                             Carbon Dioxide Concentration in Parts Per Million
                                                      Methane Concentration in Parts Per Billion
                                                   Nitrous Oxide Concentration in Parts Per Billion
              Simple Linear Regression Parameters
              Simple Linear Regression Parameters
             Simple Linear Regression Parameters
                                                         Greenhouse Gas Concentrations Table

NOAA Contiguous United States of America Precipitation by James Pate Williams Jr BA, BS, MSwE, PhD

I designed and implemented a C# computer language application to model the precipitation data found on the NOAA website:

https://www.ncdc.noaa.gov

I used the latest recommended data for time period 1895 to 2017. The empirical modeling paradigm I used was simple linear regression. My model goes out to the year 2300. The key formulas used by the model are:

Simple  Linear Regression Equations

See the website:

https://en.wikipedia.org/wiki/Simple_linear_regression

Some plots of the contiguous U.S. precipitation are shown below. The climate is getting wetter thus some parts of the U.S.maybe more prone to floods.

Precipitation Plot
Precipitation Plot
Precipitation Plot
Precipitation Plot
Precipitation Plot
Precipitation Plot
Precipitation Plot
Simple Linear Regression Parameters
Precipitation Table Experimental and Theoretical Values