For the first assignment, we will look at how Racket (Scheme) handles big numbers. Consider the following Java program (available in Test.java). public class Test { public void main(String[] args) { System.out.println(999999999999999999999 * 2); } } You could easily calculate 999999999999999999999 * 2 with pencil and paper; Java cannot handle it. $ javac Test.java Test.java:3: error: integer number too large: 999999999999999999999 System.out.println(999999999999999999999 * 2); ^ 1 error With Racket, there is no problem: $ racket Welcome to Racket v6.0.1. > (* 999999999999999999999 2) 1999999999999999999998 > So how does Racket handle these numbers? We will implement a simplified big-num module to understand it better. In our implementation, a number will be a list of "blocks" of numbers from 0-999, stored with the least significant "block" first. So 9,873,201 will be stored as: '(201 873 9) Your job is to complete big-num.rkt. The breakdown of points is as follows: * 10 points -- Complete big-add1 * 5 points -- Complete big-subtract1 * 3 points -- Complete big-eq * 1 points -- Complete big-multiply * 1 points -- Complete big-power-of Starter code is available at http://cs.sjsu.edu/~austin/cs152-fall15/hw/hw1/. The files include: * big-num.rkt -- You will modify this file (only). * bc.rkt -- A (very) simple calculator that relies on your big-num module. * test.rkt -- A number of test cases that use big-num. * input -- A number of cases that bc.rkt should handle correctly. * output_EXPECTED -- the expected results of calling (from the command line): $racket test.rkt $racket bc.rkt < input Note that negative numbers are not supported, so (big-subtract '(9) '(10)) may give an error. Submit big-num.rkt through Canvas. If you submit additional files, you will lose 2 points. Some notes on this assignment: *Your solution must be recursive. *You cannot use Scheme's "set!" function. *You must work by yourself. *Your code cannot call string->bignum or number->bignum. If you violate any of these rules, you will get a 0 for the assignment.