Add 'labs/' from commit '58cd0413b229aea4bad859401adb7f4cb8f4474d'
git-subtree-dir: labs git-subtree-mainline:4d409d3106git-subtree-split:58cd0413b2
This commit is contained in:
139
labs/01_datalab/README
Normal file
139
labs/01_datalab/README
Normal file
@@ -0,0 +1,139 @@
|
||||
**********************************
|
||||
* CS4009 Assignemnt 1 - Data Lab *
|
||||
**********************************
|
||||
|
||||
Your goal is to modify your copy of bits.c so that it passes all the
|
||||
tests in btest without violating any of the coding guidelines.
|
||||
|
||||
|
||||
*********
|
||||
0. Files:
|
||||
*********
|
||||
|
||||
Makefile - Makes btest, fshow, and ishow
|
||||
README - This file
|
||||
bits.c - The file you will be modifying and handing in
|
||||
bits.h - Header file
|
||||
btest.c - The main btest program
|
||||
btest.h - Used to build btest
|
||||
decl.c - Used to build btest
|
||||
tests.c - Used to build btest
|
||||
tests-header.c- Used to build btest
|
||||
dlc* - Rule checking compiler binary (data lab compiler)
|
||||
driver.pl* - Driver program that uses btest and dlc to autograde bits.c
|
||||
Driverhdrs.pm - Header file for optional "Beat the Prof" contest
|
||||
fshow.c - Utility for examining floating-point representations
|
||||
ishow.c - Utility for examining integer representations
|
||||
|
||||
***********************************************************
|
||||
1. Modifying bits.c and checking it for compliance with dlc
|
||||
***********************************************************
|
||||
|
||||
IMPORTANT: Carefully read the instructions in the bits.c file before
|
||||
you start. These give the coding rules that you will need to follow if
|
||||
you want full credit.
|
||||
|
||||
Use the dlc compiler (./dlc) to automatically check your version of
|
||||
bits.c for compliance with the coding guidelines:
|
||||
|
||||
unix> ./dlc bits.c
|
||||
|
||||
dlc returns silently if there are no problems with your code.
|
||||
Otherwise it prints messages that flag any problems. Running dlc with
|
||||
the -e switch:
|
||||
|
||||
unix> ./dlc -e bits.c
|
||||
|
||||
causes dlc to print counts of the number of operators used by each function.
|
||||
|
||||
Once you have a legal solution, you can test it for correctness using
|
||||
the ./btest program.
|
||||
|
||||
*********************
|
||||
2. Testing with btest
|
||||
*********************
|
||||
|
||||
The Makefile in this directory compiles your version of bits.c with
|
||||
additional code to create a program (or test harness) named btest.
|
||||
|
||||
To compile and run the btest program, type:
|
||||
|
||||
unix> make btest
|
||||
unix> ./btest [optional cmd line args]
|
||||
|
||||
You will need to recompile btest each time you change your bits.c
|
||||
program. When moving from one platform to another, you will want to
|
||||
get rid of the old version of btest and generate a new one. Use the
|
||||
commands:
|
||||
|
||||
unix> make clean
|
||||
unix> make btest
|
||||
|
||||
Btest tests your code for correctness by running millions of test
|
||||
cases on each function. It tests wide swaths around well known corner
|
||||
cases such as Tmin and zero for integer puzzles, and zero, inf, and
|
||||
the boundary between denormalized and normalized numbers for floating
|
||||
point puzzles. When btest detects an error in one of your functions,
|
||||
it prints out the test that failed, the incorrect result, and the
|
||||
expected result, and then terminates the testing for that function.
|
||||
|
||||
Here are the command line options for btest:
|
||||
|
||||
unix> ./btest -h
|
||||
Usage: ./btest [-hg] [-r <n>] [-f <name> [-1|-2|-3 <val>]*] [-T <time limit>]
|
||||
-1 <val> Specify first function argument
|
||||
-2 <val> Specify second function argument
|
||||
-3 <val> Specify third function argument
|
||||
-f <name> Test only the named function
|
||||
-g Format output for autograding with no error messages
|
||||
-h Print this message
|
||||
-r <n> Give uniform weight of n for all problems
|
||||
-T <lim> Set timeout limit to lim
|
||||
|
||||
Examples:
|
||||
|
||||
Test all functions for correctness and print out error messages:
|
||||
unix> ./btest
|
||||
|
||||
Test all functions in a compact form with no error messages:
|
||||
unix> ./btest -g
|
||||
|
||||
Test function foo for correctness:
|
||||
unix> ./btest -f foo
|
||||
|
||||
Test function foo for correctness with specific arguments:
|
||||
unix> ./btest -f foo -1 27 -2 0xf
|
||||
|
||||
Btest does not check your code for compliance with the coding
|
||||
guidelines. Use dlc to do that.
|
||||
|
||||
*******************
|
||||
3. Helper Programs
|
||||
*******************
|
||||
|
||||
We have included the ishow and fshow programs to help you decipher
|
||||
integer and floating point representations respectively. Each takes a
|
||||
single decimal or hex number as an argument. To build them type:
|
||||
|
||||
unix> make
|
||||
|
||||
Example usages:
|
||||
|
||||
unix> ./ishow 0x27
|
||||
Hex = 0x00000027, Signed = 39, Unsigned = 39
|
||||
|
||||
unix> ./ishow 27
|
||||
Hex = 0x0000001b, Signed = 27, Unsigned = 27
|
||||
|
||||
unix> ./fshow 0x15213243
|
||||
Floating point value 3.255334057e-26
|
||||
Bit Representation 0x15213243, sign = 0, exponent = 0x2a, fraction = 0x213243
|
||||
Normalized. +1.2593463659 X 2^(-85)
|
||||
|
||||
linux> ./fshow 15213243
|
||||
Floating point value 2.131829405e-38
|
||||
Bit Representation 0x00e822bb, sign = 0, exponent = 0x01, fraction = 0x6822bb
|
||||
Normalized. +1.8135598898 X 2^(-126)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user