CINDY A. COHN, ESQ.; SBN 145997
McGLASHAN & SARRAIL
Professional Corporation
177 Bovet Road, Sixth Floor
San Mateo, CA 94402
Tel: (415) 341-2585
Fax: (415) 341-1395
LEE TIEN, ESQ.; SBN 148216
1452 Curtis Street
Berkeley, CA 94702
Tel: (510) 525-0817
JAMES WHEATON; SBN 115230
ELIZABETH PRITZKER; SBN 146267
FIRST AMENDMENT PROJECT
1736 Franklin, 8th Floor
Oakland, CA 94612
Tel: (510) 208-7744
ROBERT CORN-REVERE, ESQ.
Hogan & Hartson, L.L.P.
555 Thirteenth Street, NW
Washington, D.C. 20004
Tel: (202) 637-5600
Attorneys for Plaintiff
Daniel J. Bernstein
IN THE UNITED STATES DISTRICT COURT
FOR THE NORTHERN DISTRICT OF CALIFORNIA
DANIEL J. BERNSTEIN )
) C 95-00582 MHP
Plaintiff, )
) DECLARATION OF DANIEL J.
v. ) BERNSTEIN IN OPPOSITION TO
) DEFENDANTS' SECOND MOTION
) FOR SUMMARY JUDGMENT
)
UNITED STATES DEPARTMENT OF )
STATE et al., )
) Date: June 18, 1997
) Time: 10:30 a.m.
Defendants. ) Judge: Honorable
________________________________________) Marilyn Hall Patel
I, DANIEL J. BERNSTEIN, declare:
1. I am the Plaintiff in the above-entitled action. The
facts stated herein are known to me of my own personal knowledge and, if
called upon to testify thereon, I could and would competently do so.
2. I am currently Research Assistant Professor in the
Department of Mathematics, Statistics, and Computer Science at the
University of Illinois at Chicago.
3. On 16 May 1997, I wrote a computer program, a copy of
which is attached hereto as Exhibit "A."
4. The program calculates the date of Easter in a given year.
For example, given the year 1998, the program will help a person
determine that Easter will occur on 12 April.
5. The program uses an algorithm published by Knuth in The
Art of Computer Programming, page 155. Knuth credits the algorithm to
Aloysius Lilius and Christopher Clavius in the 16th century.
6. The program is COBOL source code. COBOL, the Common
Business-Oriented Language, is a programming language very similar to
English. According to a recent article in the New York Times
("Programming Languages: Survivors and Wannabes," 9 September 1996), COBOL
"is 35 years old and remains the most popular language for corporate
mainframe programming."
7. There are several ways to use the program. People who can
read English can read the program and follow the instructions manually.
People who own calculators can save time by giving all the arithmetic
instructions to their calculators. People who own computers with COBOL
compilers can save even more time by compiling the program and letting
their computers do all the work.
I declare under penalty of perjury that the foregoing is true and
correct and that this Declaration was signed on ______________________,
1997 in Chicago, IL.
DANIEL J. BERNSTEIN
Exhibit A
Identification division.
Program-ID. Date-of-Easter.
Environment division.
Data division.
Working-storage section.
01 year picture 99999.
01 result picture 99999.
01 century picture 99999.
01 leapdays picture 99999.
01 moondays picture 99999.
01 X picture 99999.
01 Y picture 99999.
01 J picture 99999.
01 N picture 99999.
Procedure division.
Display "Give me a year.".
Accept year.
Divide year by 100 giving result.
Add 1 to result giving century.
* Note: Always round down. Discard remainders.
Multiply century by 3 giving result.
Divide result by 4 giving leapdays.
Multiply century by 8 giving result.
Add 5 to result.
Divide result by 25 giving moondays.
Divide year by 19 giving result.
Multiply result by 19.
Subtract result from year giving J.
Multiply J by 11 giving result.
Add moondays to result.
Subtract leapdays from result.
Add 614 to result giving X.
Divide X by 30 giving result.
Multiply result by 30.
Subtract X from result.
Add 57 to result giving N.
If N is equal to 56 and J is greater than 10
subtract 1 from N.
If N is equal to 57
subtract 1 from N.
Multiply year by 5 giving result.
Divide result by 4.
Subtract leapdays from result.
Add N to result.
Add 2 to result giving Y.
Divide Y by 7 giving result.
Multiply result by 7.
Add N to result.
Subtract Y from result.
If result is less than 32
display "March" result.
Subtract 31 from result.
If result is greater than 0
display "April" result.
Stop run.