.PAPER SIZE 57,80 .LEFT MARGIN 10 .RIGHT MARGIN 70 .TITLE ^^FILE ARITHMETIC PROGRAM\\ .SKIP 5 .CENTER ^^MATH .CENTER FILE ARITHMETIC PROGRAM\\ .SKIP2 .INDENT 7 ^THE ^^MATH\\ PROGRAM ALLOWS YOU TO PERFORM A SINGLE ARITHMETIC EXPRESSION ON LARGE AMOUNTS OF DATA IN A BIO-FILE, OR SEVERAL BIO-FILES. .SKIP .CENTER ^^FEATURES\\ .SKIP ^UP TO FOUR INPUT FILES. .SKIP ^SYMBOLIC NAMES FOR VARIABLES (EX.: ^^REALS-BLANKS)\\ .SKIP ^BUILT IN CONSTANTS FOR ^^TRUE, FALSE, PIE (\\THATS 3.141592654), AND E. .SKIP ^UNARY OPERATIONS: ^^SQRT\\ (SQUARE ROOT), ^^LN\\ (NATURAL LOG), ^^EXP\\ (E TO THE X), ^^NOT\\ (LOGICAL INVERSE), AND ^^ABS\\ (ABSOLUTE VALUE). .SKIP ^NORMAL ARITHMETIC OPERATIONS WITH PARENTHESES NOTATION: + - * / AND _^ (EXPONENTIATION , ** IS ALSO SUPPORTED). .SKIP ^LOGICAL OPERATIONS: _& (^^AND\\), AND _\ (^^OR\\). (^FOR TERMINALS WITH A STANDARD ^^OR\\ SYMBOL, | WILL WORK ALSO). .SKIP ^RELATIONAL OPERATIONS: >## <## ==## >=## <=. .SKIP "^GENERALIZED ARITHMETIC EXPRESSIONS": ^ALLOWS INTERMEDIATE CALCULATIONS TO BE SAVED IN THE MIDDLE OF AN EXPRESSION. ^EXAMPLE SHOWS TWO EXPRESSIONS THAT WILL GENERATE THE SAME ANSWER: .SKIP .INDENT 5 ^^X=(A=5*REALS-BLANKS)-LN(A) .INDENT 5 X=5*REALS-BLANKS-LN(5*REALS-BLANKS)\\ .SKIP ^ADDITIONAL OPERATIONS CAN BE ADDED IN A FLASH. ^IF THE ABOVE SET OF UNARY AND BINARY OPERATIONS IS NOT ENOUGH, THE PROGRAM IS DESIGNED SO THAT NEW OPCODES CAN BE ADDED WITH ONLY A FEW MINUTES OF PROGRAMMING EFFORT. .SKIP 5 .TEST PAGE 20 .CENTER ^^MATH INPUT COMMANDS\\ .SKIP 2 .INDENT -3 ^^TI &T\\&ITLE COMMAND. ^EVERYTHING IN COLUMNS 3 THROUGH 80 ON THE TITLE CARD WILL PRINT ON THE JOB LOG, AS WELL AS ON THE JOBS OUTPUT IN BOLD LETTERS. .SKIP .INDENT -3 ^^PR &P\\&RINT OPTIONS COMMAND. ^THE NORMAL ^^MATH\\ OUTPUT JUST PRINTS THE KEYS USED FOR EACH RACK ON EACH INPUT FILE, AND THE OUTPUT FILE. ^THE OPTION ^^RESULTS\\ ON A ^^PR\\ COMMAND WILL FORCE THE PROGRAM TO PRINT OUT THE STRAIN ATTRIBUTES, INPUT TITERS, AND OUTPUT RESULT FOR EACH ELEMENT PROCESSED. ^IN ADDITION, THE OPTION ^^ERRORS\\ WILL CAUSE AN ERROR MESSAGE TO PRINT BEFORE EACH LINE THAT HAD AN EVALUATE ERROR PROBLEM, LIKE DIVIDE BY ZERO. ^THE TOTAL OF ALL ERRORS WILL ALWAYS BE PRINTED ON THE END OF THE JOB LOG, WHETHER OR NOT YOU SPECIFY THIS OPTION. .SKIP .INDENT -3 ^^AR &A\\&RITHMETIC EXPRESSION COMMAND. ^THIS CARD CONTAINS THE EXPRESSION YOU WISH PERFORMED ON ALL DATA ELEMENTS IN YOUR INPUT FILE(S). .SKIP .INDENT -3 ^^VS &V\\ARIABLE &SELECT COMMAND. ^A BIO-FILE CONTAINS THREE TYPES OF VALUES, ORIGINAL READINGS, FUDGED READINGS, AND CALCULATED TITERS. ^^MATH\\ WILL DEFAULT TO DOING CALCULATIONS ON TITERS, BUT IF YOU WISH TO CHANGE THAT DEFAULT, YOU CAN SPECIFY A ^^VS\\ CARD WITH ONE OF THE FOLLOWING THREE KEYWORDS PUNCHED ON IT: ^^ORIGINALS FUDGED TITERS\\. ^YOU MAY INCLUDE A DIFFERENT ^^VS\\ COMMAND BEFORE EACH INPUT FILE AND BEFORE THE OUTPUT FILE IF YOU WISH TO SPECIFY A DIFFERENT TYPE OF VARIABLE FOR EACH FILE. ^ONCE THE TYPE HAS BEEN CHANGED, IT DOES NOT REVERT TO TITERS UNLESS YOU SPECIFICALLY CHANGE IT BACK WITH ANOTHER ^^VS\\ COMMAND. .SKIP .INDENT -3 ^^EX &E\\&XPERIMENT FILE NAME COMMAND. ^THIS COMMAND SPECIFIES THE NAME OF AN INPUT FILE. ^THERE CAN BE UP TO FOUR INPUT FILES, BUT YOU MUST HAVE AT LEAST ONE (USE ^^DESCRIBE\\ TO DESCRIBE THE FILE FIRST IF YOU WISH TO MAKE UP DATA). .SKIP .INDENT -3 ^^FN &F\\ILE SYMBOLIC &NAME COMMAND. ^THIS COMMAND, FOLLOWING AN ^^EX\\ COMMAND, SPECIFIES THE SYMBOLIC NAME THAT REPRESENTS A DATA ELEMENT FROM THIS FILE. ^THE DEFAULT NAME IS ^FN, WHERE N IS THE INPUT FILE NUMBER, 1 THROUGH 4, IN THE ORDER THAT THE ^^EX\\ COMMANDS ARE ENCOUNTERED. .SKIP .INDENT -3 ^^KE &K\\&EY COMMAND. ^THIS COMMAND SPECIFIES WHICH RACKS IN A BIO-FILE WILL BE PROCESSED. ^THE FORMAT OF A ^^KE\\ CARD IS DISCUSSED IN GREAT DETAIL IN THE ^^DESCRIBE\\ WRITEUP. ^A BLANK ^^KE\\ COMMAND WILL DEFAULT TO EVERY RACK IN THE EXPERIMENT FILE. .BREAK ^NOTE -- ^YOU ARE ONLY ALLOWED ONE KEY COMMAND AFTER AN OUTPUT FILE COMMAND. ^ANY COMMANDS FOLLOWING THAT KEY COMMAND WILL BE IGNORED. .SKIP .TEST PAGE 20 .INDENT -3 ^^MD &M\\ISSING &DATA COMMAND. ^THE ^^MATH\\ PROGRAM IS DESIGNED FOR WORKING WITH FILES THAT LOOK IDENTICAL (EXCEPT FOR THE VALUES!), BUT THIS IS OFTEN NOT THE CASE. ^THE ^^MD\\ COMMAND GIVES YOU THREE ALTERNATIVES TO USE WHEN DATA IS MISSING FROM ONE OR SOME FO THE INPUT FILES. .LEFT MARGIN 20 .SKIP .INDENT -10 ^^MD THROW OUT\\ .BREAK ^THIS WILL CAUSE THE ELEMENTS FROM ALL THE INPUT FILES TO BE THROWN OUT WHEN ANY ONE OF THE FILES IS MISSING THAT ELEMENT. ^VALUES WILL CONTINUE TO BE THROWN OUT UNTIL THE REST OF THE FILES "CATCH UP" WITH THE FILE THAT HAS MISSING ELEMENTS. .SKIP .INDENT -10 ^^MD RP .BREAK ^^&R\\E&PLACE OPTION WILL REPLACE ALL MISSING VALUES WITH THE REAL NUMBER THAT YOU SUPPLY. ^THIS IS THE DEFAULT ACTION TAKEN, WITH A DEFAULT VALUE OF ZERO. .SKIP .INDENT -10 ^^MD IGNORE\\ .BREAK ^THIS OPTION CAUSES THE ELEMENTS THAT ARE FOUND TO BE PROCESSED WITHOUT CHECKING TO SEE IF THEY MATCH AT ALL. ^A POSSIBLE USE FOR THIS WOULD BE FOR COMBINING DATA FROM DISSIMILAR RACKS. ^THE DATA ELEMENTS ARE STILL SORTED BY RACK AND FLASK POSITION BEFORE THE OUTPUT FILE IS CREATED, AND THE NAME OF EACH OUTPUT ELEMENT WILL BE THAT OF THE "LOWEST" ELEMENT OF ALL THE INPUT FILES. .BREAK ^NOTE -- IF ANY OF THE INPUT FILES RUNS OUT BEFORE THE REST, THE REMAINING VALUES IN THE REST OF THE INPUT FILES ARE THROWN OUT. .SKIP .LEFT MARGIN 10 .INDENT -3 ^^OF &O\\UTPUT &FILE COMMAND. ^SPECIFIES THE NAME OF THE OUTPUT FILE. ^THE OUTPUT FILE CAN BE THE SAME AS ONE OF THE INPUT FILES IF YOU WISH. ^NOTE THAT WHEN THE OUTPUT FILE IS A NEW FILE, THE OUTPUT KEY COMMAND THAT FOLLOWS THE ^^OF\\ COMMAND MUST SPECIFY ALL FIELDS OR THEY WILL DEFAULT TO BLANKS. .SKIP 5 .TEST PAGE 20 .CENTER ^^PRECEDENCE OF THE OPERATORS IN ^&MATH\&\\ .SKIP .INDENT -4 1. ^FIRST, ANYTHING ENCLOSED IN PARENTHESES. .SKIP .INDENT -4 2. ^UNARY OPERATIONS: - (WHEN USED AS "CHANGE SIGN" OR NEGATION), ^^SQRT\\, ^^LN\\, ^^EXP\\, ^^NOT\\, AND ^^ABS\\. .SKIP .INDENT -4 3. ^EXPONENTIATION HAS THE NEXT PRIORITY DOWN. .SKIP .INDENT -4 4. ^MULTIPLICATION AND DIVISION. .SKIP .INDENT -4 5. ^ADDITION AND SUBTRACTION. .SKIP .INDENT -4 6. ^LOGICAL ^^AND\\ (_&) AND ^^OR\\ (| OR _\). .SKIP .INDENT -4 7. ^RELATIONAL OPERATIONS. .SKIP .INDENT -4 8. ^AND LAST, BUT NOT LEAST, ARITHMETIC REPLACEMENT, (=). .SKIP ^NOTE -- ^OPERATORS THAT HAVE EQUAL PRECEDENCE, LIKE MULTIPLY AND DIVIDE, ARE PROCESSED FROM LEFT TO RIGHT. .SKIP 5 .TEST PAGE 20 .CENTER ^^SPECIAL OPERATIORS IN ^&MATH\&\\ .SKIP .INDENT 5 ^BECAUSE ARITHMETIC EXPRESSIONS IN MATH ARE TREATED TOTALLY AS EXPRESSIONS INVOLVING \&REAL\& NUMBERS, THE MEANING OF SOME OF THE OPERATORS NEEDS A LITTLE EXPLANATION. .SKIP .INDENT -3 ^^LOGICAL VALUES\\ .INDENT 5 ^THE LOGIC VALUE ^^TRUE\\ IS REPRESENTED BY A REAL VALUE 1.0, AND ^^FALSE\\ IS REPRESENTED BY 0.0. ^HOWEVER, WHEN YOU PERFORM A LOGICAL OPERATION, ANY OTHER NON-ZERO VALUE IS ALSO CONSIDERED TO BE "^^TRUE\\". .SKIP .INDENT -3 ^^LOGICAL OPERATIONS\\ .INDENT 5 ^IN THE EXPRESSION ^^A_&B\\ THE ^^AND\\ SYMBOL MEANS RETURN THE VALUE OF ^B IF ^A IS NON ZERO, OTHERWISE RETURN ZERO. ^THE REASON FOR THIS CHOICE WAS TO ALLOW "^^IF STATEMENT\\" LIKE EXPRESSIONS IN ^^MATH\\. ^ALSO, IF YOU WERE TO TRY ALL COMBINATIONS OF LOGICAL INPUTS TO THE EXPRESSION, YOU WOULD FIND THAT IT DOES GIVE THE CORRECT LOGICAL RESULT. .INDENT 5 ^IN THE EXPRESSION ^A_\^B (OR ^A|^B), THE ^^OR\\ SYMBOL MEANS TO RETURN ^A IF ^B IS ZERO, OR ^B IF ^A IS ZERO. ^IF BOTH ARE NON-ZERO (^^TRUE\\), THE VALUE OF ^A IS RETURNED. .SKIP .INDENT -3 ^^RELATIONAL OPERATIONS\\ .INDENT 5 ^THE RELATIONAL OPERATIONS WILL SIMPLY RETURN A ^^TRUE\\ IF THE EXPRESSION IS CORRECT, AND A FALSE IF IT IS NOT. ^THE ONLY PITFALL TO LOOK OUT FOR IS TO MAKE SURE YOU USE "==" WHEN YOU MEAN "IS EQUAL TO" AND NOT "=", WHICH MEANS "IS REPLACED BY". .SKIP .INDENT -3 ^^UNARY OPERATIONS\\ ^ALL UNARY OPERATONS EXCEPT NEGATION (-) REQUIRE PARENTHESES AROUND THEIR ARGUMENT. .SKIP ^HERE IS AN EXPRESSION THAT USES ALL THE SPECIAL FEATURES OF ^^MATH\\, AND AN EXPLANATION OF WHAT THE EXPRESSION WILL DO: .SKIP ^^((A=BLANKS==0)_&REALS/BLANKS)|(NOT(A)_&REALS)\\ .SKIP .INDENT 5 ^THE EXPRESSION ^^BLANKS==0\\ IS EVALUATED FIRST AND THE RESULT, EITHER ^^TRUE\\ OR ^^FALSE\\ IS STORED IN ^A FOR USE LATER. ^IF THE RESULT WAS ^^TRUE\\, THEN THE EXPRESSION ^^REALS/BLANKS\\ IS EVALUATED TO GIVE THE RESULT OF THE WHOLE EXPRESSION. ^WHEN THE RESULT IN ^A IS ^^FALSE\\, (AND OF COURSE ^^NOT(A)\\ IS ^^TRUE\\), THE RESULT OF THE WHOLE EXPRESSION BECOMES JUST ^^REALS\\.