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.