%externalroutine MATHS ERROR ROUTINE %alias "f_mle" (%integer error number) ! ! %externalroutinespec fstop %alias "f_stop" (%integer i,j) %conststring(67) %array maths errors (1:46)= %c {dlogsmall = 1} "DLOG arg negative or zero", {dsqrtneg = 2} "DSQRT arg negative", {dexplarge = 3} "DEXP arg greater than 174.6731", {dexpsmall = 4} "DEXP arg less than -180.2182, not used", {dsinlarge = 5} "DSIN arg magnitude greater than 7.205D16", {dasinlarge = 6} "DASIN arg magnitude greater than 1.0", {dcoslarge = 7} "DCOS arg magnitude greater than 7.205D16 ", {dacoslarge = 8} "DACOS arg magnitude greater than 1.0", {dtanlarge = 9} "DTAN/DCOTAN arg magnitude greater than 3.521D15", {dcotansmall = 10} "DCOTAN arg small in magnitude", {darcsinlarge = 11} "Not used", {darccoslarge = 12} "Not used", {darctan2zero = 13} "DATAN2 args zero", {dsinhlarge = 14} "DSINH arg magnitude greater than 175.3662 ", {dcoshlarge = 15} "DCOSH arg magnitude greater than 175.3662 ", {dpowerneg = 16} "Negative D.P. value raised to a non-integer power", {dpowerzero = 17} "D.P. zero raised to non-positive power ", { sqrtneg = 18} "SQRT arg negative", { explarge = 19} "EXP arg greater than 174.6731", { expsmall = 20} "EXP arg less than -180.2182, not used", { alogsmall = 21} "ALOG arg negative or zero", { powerzero = 22} "REAL zero raised to non-positive power ", { powerneg = 23} "Negative REAL value raised to a non-integer power", { powerbig = 24} "REAL value raised to too large a REAL power ", { powersmall = 25} "REAL value to REAL power underflows. not used", { sinlarge = 26} "SIN arg magnitude greater than 5.274E7", { coslarge = 27} "COS arg magnitude greater than 5.274E7", { tanlarge = 28} "TAN/COTAN arg magnitude greater than 2.633E7", { asinlarge = 29} "ASIN arg magnitude greater than 1.0", { acoslarge = 30} "ACOS arg magnitude greater than 1.0", { arctan2zero = 31} "ATAN2 args zero", { sinhlarge = 32} "SINH arg magnitude greater than 175.3662 ", { coshlarge = 33} "COSH arg magnitude greater than 175.3662 ", {dgamlarge = 34} "DGAMMA arg magnitude greater than 57.0", {dgamnegint = 35} "DGAMMA arg near zero or negative integer", {dlgamneg = 36} "DLGAMA arg is negative", {dlgamlarge = 37} "DLGAMA arg is greater than 4.29D73", {ipowexpneg = 38} "Integer raised to negative integer power", {ipowerzero = 39} "Integer zero raised to non-positive power", {ipowlarge = 40} "Integer to integer power overflows", { cotansmall = 41} "COTAN arg small in magnitude", { gamlarge = 42} "GAMMA arg magnitude greater than 57.0", { gamnegint = 43} "GAMMA arg near zero or negative integer", { lgamneg = 44} "ALGAMA arg is negative", { lgamlarge = 45} "ALGAMA arg is greater than 4.29E73", { dpowerlarge = 46} "D.P. value raised to too large a D.P. power" !Print the Error Message: ! ! print string (" Maths Library Error"); write(error number,3); print string (": "); %if error number>= 1 %and %c error number<= 46 %then print string (maths errors (error number)) %c %else print string ("no text") newline !Now Stop With Diagnostics: ! fstop (-255, {skip} 2 {stack frames}) %end; !of MATHS ERROR ROUTINE %endoffile