Open64 (mfef90, whirl2f, and IR tools)  TAG: version-openad; SVN changeset: 916
edition.c
Go to the documentation of this file.
00001 
00002 /*
00003 
00004   Copyright (C) 2000, 2001 Silicon Graphics, Inc.  All Rights Reserved.
00005 
00006   This program is free software; you can redistribute it and/or modify it
00007   under the terms of version 2 of the GNU General Public License as
00008   published by the Free Software Foundation.
00009 
00010   This program is distributed in the hope that it would be useful, but
00011   WITHOUT ANY WARRANTY; without even the implied warranty of
00012   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
00013 
00014   Further, this software is distributed without any warranty that it is
00015   free of the rightful claim of any third person regarding infringement 
00016   or the like.  Any license provided herein, whether implied or 
00017   otherwise, applies only to this software file.  Patent licenses, if 
00018   any, provided herein do not apply to combinations of this program with 
00019   other software, or any other product whatsoever.  
00020 
00021   You should have received a copy of the GNU General Public License along
00022   with this program; if not, write the Free Software Foundation, Inc., 59
00023   Temple Place - Suite 330, Boston MA 02111-1307, USA.
00024 
00025   Contact information:  Silicon Graphics, Inc., 1600 Amphitheatre Pky,
00026   Mountain View, CA 94043, or:
00027 
00028   http://www.sgi.com
00029 
00030   For further information regarding this notice, see:
00031 
00032   http://oss.sgi.com/projects/GenInfo/NoticeExplan
00033 
00034 */
00035 
00036 static char ar_eval_lib_edition[] = "@(#)arith.a version 2." EDITION;
00037 
00038 char AR_version [] = EDITION;           /* arith.a edition number */
00039 char AR_libmv2[32] = "x.x.x.x (00000)"; /* libm[v2].a version and edition #s */
00040 char AR_arith_data[2] = "\0";           /* arith.a data file edition number */
00041 
00042 const char *arith_vers_name(void)   { return "arith";}
00043 
00044 const char *arith_vers_ID(void)     { return "a";}
00045 
00046 const char *arith_vers_number(void) { return EDITION;}
00047 
00048 
00049 /* Change log for each edition:
00050 Edition 241:
00051         1.      MIPS NaNs are the opposite of SPARC/T90-IEEE/Alpha NaNs:
00052                 the latter has the high bit of the mantissa clear for
00053                 signalling NaNs, and set for quiet ones, while the former
00054                 is the other way around.
00055 
00056 Edition 240:
00057         1.      Add status setting for AR_STAT_INEXACT in IEEE normalization.
00058         2.      Makefile cleanup -- don't execute "target" if not on a Cray
00059                 machine, and in the "arith.a:" target, copy the arith.h file
00060                 into a "common" subdirectory.  I had moved the common files
00061                 into a "common" subdir in the USS directory in edition 234,
00062                 and modified the get.obj.arith script accordingly, but I
00063                 needed to do the same thing in the build directory structure,
00064                 so that doing a "get.obj.arith -v xn ..." would work.
00065         3.      Remove the use of /cray/uss/compiler/cost/bin/validate from
00066                 the get.obj.arith script.
00067 
00068 Edition 239:
00069         1.      Add AR_ibits().
00070 
00071 Edition 238:
00072         1.      Missed some modules that needed additions for 8-bit and
00073                 16-bit integers.
00074         2.      Add full support for determining the host architecture.
00075         3.      Fix some minor divots in float-->string conversions.
00076         4.      Add AR_ishft() and AR_ishftc(), for the corresponding f90
00077                 intrinsics, and add code to testint.c to test these.
00078         5.      Remove the use of <ctype.h> in strcvt.c.  This allows us
00079                 to compile arith with 9.x #include files, and link it
00080                 with 8.x libraries, and have everything work right.  It
00081                 doesn't hurt wide-character compatibility, because there
00082                 is quite a bit of code in strcvt.c that is incompatible
00083                 with wide characters already.
00084 
00085 Edition 237:
00086         1.      Add support for 8-bit and 16-bit integers.
00087 
00088 Edition 236:
00089         1.      Bring in the MIPS quad changes from Rich Shapiro.
00090         2.      Fix 703309 -- non-base-10 int-to-str conversions yielded
00091                 trash.
00092         3.      Add appropriate casts to cray1_sim.c and mpp_sim.c, to
00093                 remove some warnings about mistyped assignments.
00094 
00095 Edition 235:
00096         1.      Remove the MIPS hack in native.c for the INDEX(), SCAN(), and
00097                 VERIFY() intrinsics.
00098         2.      Make negating IEEE float/complex 0.0 work right (it was yielding
00099                 -0.0).
00100         3.      Undo #2.  The IEEE standard says that -x is x with its sign bit
00101                 toggled.  That is, it is not necessarily the same as (0-x).
00102 
00103 Edition 234:
00104         1.      Expand the simulated stack size for Cray-1 style simulation.
00105                 As of the 3.0 arith data file, 2 kwords is not enough.  It's
00106                 now 10 kwords.
00107         2.      Clean up the code in various spots so that the Solaris and IRIX
00108                 compilers don't emit any warnings any more.
00109         3.      Really support the IRIX platform.
00110         4.      Allow re-updating of the current USS edition.
00111         5.      Move the USS arith.{doc,h,msg}.* files into a "common" subdirectory
00112                 (aesthetics -- makes the directory easier to look at).
00113         6.      Make sure all the files installed on USS have group-write access.
00114         7.      Clean up get.obj.arith -- the indentation had gotten a little
00115                 odd over the years.
00116         8.      Use click and/or clack for IRIX builds, instead of maestro, since
00117                 those two cross-mount USS and the other CCN PVPs.
00118         9.      Retag the PL every time we do a revision.
00119    10.  Add a -n option to remote-builds.csh, to tell it not to do a
00120                 "make delete" before proceeding with the builds.
00121 
00122 Edition 233:
00123         1.      Make _numargs() work properly on T3E.  The SSIB/DSIB
00124                 simulation was broken.
00125 
00126 Edition 232:
00127         1.      Fix some problems with the preprocessing for MIPS.
00128 
00129 Edition 231:
00130         1.      Simulate byte-manipulation instructions properly for a T3E.
00131         2.      Remove pdbgint support for MPP.
00132         3.      Add environment variable control of ar_disasm debugging for
00133                 MPP.
00134 
00135 Edition 230:
00136         1.      Allow for building on a TS (only building _on_ one, not
00137                 _for_ one).
00138 
00139 Edition 229:
00140         1.      Modifications to the self-tests to allow for correct results
00141                 on TS-IEEE (they've never been right before this).
00142         2.      Continuing Makefile cleanup.
00143         3.      MIPS real*16 support from Rich Shapiro.
00144         4.      Added support for printing integers from MPP library code
00145                 during simulation.
00146 
00147 Edition 228:
00148         1.      More closely follow the IEEE rules regarding NaNs as operands
00149                 and results.
00150         2.  Use the functional forms of isdigit() and isspace(), rather
00151                 than the macro forms.  This allows us to compile with UNICOS
00152                 9.x #include files, without forcing users of arith to link
00153                 with UNICOS 9.x libs (specifically, optcg wants to be able
00154                 to link with UNICOS 8.x libs).
00155         3.      Try again.  In the Makefile, #include the UNICOS 8.3 <ctype.h>
00156                 instead of the 9.0 one.  We still link with 9.0 libs.  This
00157                 should allow both nondebug and debug builds of things that
00158                 link in arith to work.  (Fix #2, above, failed when linking
00159                 debug compilers.)
00160 
00161 Edition 227:
00162         1.      For version comparison between the arith data file and the
00163                 libm.a when simulating, do a better job of figuring out the
00164                 libm.a version.  Also did some prettification of the version
00165                 checking code in mpp_sim.c, and a minor change to allow for
00166                 creating the MPP simulation data file on a C-90.
00167 
00168 Edition 226:
00169         1.      Oops.  Send store_mpp_word() the _address_ of the register you
00170                 want to simulate storing, not the contents of it.  Sheesh.
00171 
00172 Edition 225:
00173         1.      Large amounts of Makefile beautification, after Mark Cruciani
00174                 had some targeting problems.
00175 
00176         2.      Add a -z switch to get.obj.arith, to return sources, and add
00177                 a new target "install_source" to the Makefile, to install them
00178                 where the -z logic is expecting to find them.  This new target
00179                 should be made after "update" is made.
00180 
00181         3.      Take out the -X1 for T3E builds temporarily.  It's causing
00182                 problems with the currently-available hardware.
00183 
00184 Edition 224:
00185         1.      IRIX/MIPS changes.  Add fintrin_irix.f, fintrin_dc_irix.f,
00186                 fintrin_irix_f77.f.  Update Makefile to understand about IRIX,
00187                 and build the three new modules.  Update #ifdefs in confidence.c,
00188                 miscmath.c, native.c, simulate.c, strcvt.c, and test_ar_intrin.c
00189                 to do MIPS like we do Solaris.
00190 
00191         2.      Fix a problem in AR_make_complex (miscmath.c), where aliasing
00192                 result and op2 led to wrong results.
00193 
00194         3.      Set up the simulated stack differently in mpp_sim.c.  For the
00195                 T3E, we had the simulated DSIB between the simulated frames of
00196                 the caller and callee.  The latter two need to abut, or arg
00197                 addressing when simulating routines with more than 6 arguments
00198                 won't work.
00199 
00200         4.      Replace a sequence of '|' expressions in ar_convert_str_to_float()
00201                 with a sequence of '|=' assignments.  The former is subject to
00202                 expression reordering which, although it apparently hasn't yet
00203                 occurred, would get the arguments to _defgu2sd() in the wrong
00204                 order if it happened.
00205 
00206 Edition 223:
00207     1.  Fix for spr 100775.  Insure that 64 bit addressing is used
00208         in  Ar_put_real_address().  Previous cast to long it was 
00209         getting only the low order 32 bits.
00210 
00211     2.  Changed get.obj.arith to provide release 2 arith versions for  
00212         cft90 6.x or 6.X products.
00213 
00214 Edition 222:
00215     1.  Changed header processing for cld a.out again.  Do move
00216         down over header after all segments are processed.  Insure
00217         that segment ids can't be redefined by an undefined segment.
00218 
00219     2.  Perform right shifts using macro with unsigned longs so no
00220         sign extension takes place, even for Cray systems that sign
00221         extend right shifts.  The SHRIGHT64X macro specifically does
00222         sign extension and will continue to sign extend.
00223 
00224     3.  Changed definitions of parcels to unsigned longs to insure
00225         that sign extension doesn't take place.
00226 
00227 Edition 221:
00228     1.  Changed definitions for cld a.out header. Defined dynamically
00229         rather that static assignements.
00230     2.  Spr 100747: Mod by Greg Titus.
00231         arith.internal.h:   Add ar_crnd128() declaration.
00232         cvt.c:              Call ar_crnd128() for 128-bit Cray floating
00233                             point round_int_div.
00234         convert.c:          Add ar_crnd128() body.
00235     3.  SPR 101290: Mod by Greg Titus.
00236         mpp_sim.c:          Fix invalid type punning (IEEE complex to
00237                             IEEE float) in ar_pass_arg_value().  We
00238                             were passing a misaligned 32-bit IEEE
00239                             float to ar_convert_to_float() when we
00240                             were doing the real part of a 32-bit IEEE
00241                             complex.
00242 
00243 Edition 220:
00244     1.  Changed Makefile to build Cray-t3d and Cray-t3e targets.
00245 
00246     2.  Changes for native versions of Cray-t3d and Cray-t3e that use
00247         Solaris simulation routines. 
00248 
00249 Edition 219:
00250     1.  Changed mpp_sim.c to handle the segment identifier differences between
00251         the t3d and t3e.  open_intrinsics_file now looks at the segment
00252         type field of the file header instead of the id, and
00253         load/store_mpp_word now looks at variables corresponding to the
00254         new segment identifiers.  T3E data files built with mppldr should
00255         not be used.  Those produced by cld will be handled (hopefully) by
00256         this mod.
00257 
00258     2.  Changed arith_mpp.s to add the 32-bit SCANI, VERIFYI, and INDEXI
00259         intrinsics to the list of those needing to have their fcd arguments
00260         converted to byte-lengths.
00261 
00262 Edition 218:
00263     1.  Triton-IEEE 0162 and 0163 divide instructions had the operands
00264         reversed for the divide calls.  This fixes SPRs: 95451, 96747,
00265         95582, 97309, 99176, 99366.
00266 
00267 Edition 217:
00268     1.  MPP 0x18 instructions were being called illegal and arith was aborting.
00269         These are now disassembled and ignored.  For 0x18c (RPCC), the rtc
00270         is moved into ra.
00271 
00272     2.  The mpp intrinsic simulations for index, scan, verify, and selected_
00273         real_kind for 32-bit integers were not supported.  The appropriate
00274         entry points are now in place however.
00275 
00276 Edition 216:
00277     1.  Fix for SPR 98417.  The 01xx40 instructions (loads and stores to
00278         and from S-regs with 3-parcel address expressions) were incorrectly
00279         simulated.  Only two parcels were ever being used.
00280 
00281 Edition 215:
00282 
00283     1.  Changed get.obj.arith to use /bin/cp instead of whatever one's path
00284         pointed to, to prevent ownership problems, and now use chmod to
00285         force the correct permissions.
00286         
00287     2.  Added "bump" to the Makefile to allow moving the newest version
00288         to latest without creating a new newest.
00289         
00290     3.  Fixed SPR 96747.  This was a problem with the 174[1,2,3] instructions
00291         on the c90 and triton causing the reshape intrinsic to fail for 128-bit
00292         data items.  The loop variables and indices in the loops in ar_sim
00293         (cray1_sim.c) for these instructions were wrong.
00294 
00295 Edition 214:
00296 
00297     1.  Fixed bug in ar_itoc128 in which the resulting exponent was 1 too big.
00298         (jhw) Altered this function to return the correct status.  This fixes
00299         SPR 90659.
00300 
00301     2.  Fixed bugs in ar_sim simulation of 026/027 instructions that were
00302         causing unsimulated instruction errors and not using new A-reg operand
00303         instructions.
00304 
00305     3.  Removed rounding in conversion of Cray 128-bit to 64-bit floating point
00306         since all compilers internally just truncate (keep the first 64-bits).
00307 
00308     4.  Added tbb and svc to the change list, made the default uss results
00309         repository to be in cray/uss/a6/jhw, and changed the c90 and triton
00310         cc and libs setup to the correct directories in Makefile.
00311 
00312 Edition 213:
00313 
00314     1.  Added check for compatible floating point format between the requested
00315         resulttype and that specified by the arith data file.  Generate arith error
00316         message 2018 for a mismatch.
00317 
00318     2.  Added /opt/ctl/craylibs[_m]/craylibs[_m] as the first default location
00319         for the (native) arith data file.  Added check for libm.a in the .
00320         directory as well as the .. directory relative to the arith data file.
00321 
00322     3.  Relaxed the requirement for libm.a existing--cross-compilations do not
00323         require it.  However, if it does exist, it's version must match.
00324 
00325     4.  Added integer*8 versions of native power function evaluation.
00326 
00327     5.  Added test for IEEE attribute in get.obj.arith in determining the
00328         default target.
00329 
00330         6.  Added simulation for the remaining cray-ts[,ieee] instructions that
00331         may be encountered in future releases of libraries.
00332 
00333     7.  Modified arith_mpp.s to support T3D and T3E libraries and convert to
00334         the T3E argument/fcd interfaces if necessary.
00335 
00336     8.  Modified mpp_sim.c to interface to either T3D or T3E libraries.
00337 
00338 Edition 212:
00339 
00340     1.  Added simulation of Triton instructions Vi Vj*[LU]Vk.
00341 
00342     2.  Fixed bug in simulation of Vi Vj,Vj<Ak instruction.  Fixed bug in
00343         store_pvp_word to mask the segment number.
00344 
00345 Edition 211:
00346 
00347     1.  Added full 128-bit IEEE arithmetic everywhere.
00348 
00349     2.  Removed rounding argument from ar_cfadd/sub64 routines--wasn't used.
00350 
00351     3.  Removed all internal arith declaration stuff from arith.h.  In
00352         particular, removed the internal declarations for the AR_DATA union and
00353         moved them to an internal ar_data union in arith.internal.h.
00354 
00355     4.  Removed internal redundancy of rounding mode names.
00356 
00357     5.  Changed internal AR_FLOAT_NOT_COMPLEX to AR_FLOAT_SIMPLE.
00358 
00359     6.  Added ar_state_info struct and associated ar_state_register variable.
00360         Moved ar_CRAY_64_trunc_bits and ar_IEEE_denorm_behavior into this variable.
00361 
00362     7.  Added partial support for "multi-targetable" arith.  Intrinsic folding
00363         is multi-targetable via the arith data file pointed to by CRAYLIBS.  Basic
00364         arithmetic still depends upon input type arguments.
00365 
00366     8.  Added support for cray-ts and cray-ts,ieee in the Makefile and
00367         get.obj.arith.
00368 
00369 Edition 210:
00370 
00371     1.  Fixed problem with 64-bit pointers being cleared to 24-bits in
00372         ar_clear_unused_bits.
00373 
00374     2.  Now allow uppercase, lowercase, and full names for new and latest
00375         version ids.
00376 
00377     3.  Switched to Craylibs 2.0 for arith testing.
00378 
00379     4.  Fixed problem in cray1_sim.c and mpp_sim.c that generated libm
00380         warning message on non-package versions of Craylibs.
00381 
00382 Edition 209:
00383 
00384     1.  Modified Makefile support for updating arith data files to be able
00385         to create and update using the newest (possibly non-packaged) versions
00386         of Craylibs.  Also, modified *.o targets to be arith.a(*.o) to minimize
00387         the amount of recompilation after a make clobber.  The edition target
00388         copies an initial arith.a from the corresponding system directory.
00389 
00390     2.  Changed severity level of 2016 arith message to Logfile_Warning.
00391 
00392     3.  Added check for non-package version of arith data file (?.x.?.? in
00393         AR_libmv2) which skips libm[v2].a validation step when data file
00394         is opened.
00395 
00396         4.      Made modifications to accept 128-bit IEEE floating and 64-bit integer
00397         AR_TYPEs for Solaris.  Internally 128-bit IEEE floating values are converted
00398         to/from 64-bit values for the time being.  Also, the integer-to-integer
00399         power function uses the 32-bit intrinsic for the time being.
00400 
00401     5.  64-bit pointers no longer have the upper 8 bits cleared by
00402         ar_clear_unused_bits.
00403 
00404     6.  Allow 46-bit integer type in MPP simulation (since this is also used
00405         for Triton currently).  Eliminates AR_STAT_INVALID_TYPE for powri.
00406 
00407     7.  Added cray-ts as an allowable target in get.obj.arith.
00408 
00409     8.  Changed c++ product in get.obj.arith to return the same arith.a as scc
00410         for ccg and mppcg code generators but continue to return an arith.a with
00411         no intrinsic folding for rcg.  Also force new version for mppcg.
00412 
00413     9.  Removed extern of ARSQRTA from confidence.c and ctgen.c since Cray-2
00414         is no longer supported.  Added trapmathlibabort() to confidence.c.
00415 
00416    10.  Fix MPP simulation of defgu2sd returning 32-bit IEEE floats by moving
00417         the upper 32-bits returned by defgu2sd into the lower 32-bits.  Also, set
00418         the dynamic rounding mode variables to round-to-nearest defaults.
00419 
00420 Edition 208:
00421 
00422     1.  Fixed bug in PVP simulation of Ai [PQZ]Sj instruction to test for j==0.
00423 
00424     2.  Changed DCMPLX in test_native.f, sim_c1_gen.f, and sim_mpp_sim.f to
00425         CMPLX since DCMPLX is no longer recognized.
00426 
00427 Edition 207:
00428 
00429     1.  Allow more slop in stores also (see edition 205 notes).  Fixes problem
00430         in which a simulated ORE load is stored back to the same location with
00431         the same value.
00432 
00433     2.  Added this "allowable ORE" logic to mpp_sim.c but only up to 8 words.
00434 
00435 Edition 206:
00436 
00437     1.  Added a bunch of new PVP instructions to be simulated.  Now the only
00438         PVP (YMP) instructions not simulated are ERR, EXIT, half-precision
00439         floating multiply, monitor instructions, and any instruction
00440         referencing shared registers.
00441 
00442 Edition 205:
00443 
00444     1.  Add more slop for vector loads in simulated search functions such as
00445         in memchr.  Return bad data (0xf0f0...f0) for up to 64 words beyond
00446         known data length rather than trying to read the data and possibly
00447         getting an ORE.  Force internal error if any simulated store goes
00448         beyond known data length.
00449 
00450 Edition 204:
00451 
00452     1.  Define EDITION string on cc command line now.
00453 
00454     2.  Added declarations for arith_vers_name, arith_vers_ID, and
00455         arith_vers_number in arith.h.
00456 
00457     3.  Changed back argument in calls to _F90_{INDEX,SCAN,VERIFY} to be
00458         a pointer rather than a value due to a library change.
00459 
00460     4.  Changed makefile to permit the PVP arith data file to be built on a
00461         C90 (but still in Y-mode and using YMP libraries though).  Also build
00462         the MPP arith data file on a C90.
00463 
00464 Edition 203:
00465 
00466     1.  Bugfixes in get.obj.arith.
00467 
00468     2.  Added AR_cabs to no_intrin.c (to resolve external reference in
00469         miscmath.c)--returns AR_STAT_UNDEFINED.  Added ar_divide_complex
00470         to no_intrin.c (to resolve external reference in math.c)--computes
00471         "standard" algorithm.
00472 
00473     3.  Added 3 "" arguments to 2016 warning message call to PRINTMSG to
00474         support cft77's (Pascal) version of PRINTMSG.
00475 
00476     4.  Fixed bug to return AR_STAT_UNDERFLOW in ar_cvt_str_to_float.
00477 
00478     5.  Added what-line to arith_c1.s and arith_mpp.s so that a 'what -s arith'
00479         will display the libm version of the arith data file.  Also, cray1_sim.c
00480         and mpp_sim.c search for the what-line string and use it, if found, to
00481         obtain the libm version number.  The what-line does not contain the
00482         arith.a version number so tests using this (to generate internal error
00483         messages) were changed.
00484 
00485 Edition 202:
00486 
00487     1.  Removed 'cray-2' from the list of MACHINES in Makefile.  Miscellaneous
00488         other improvements such as email to-list.
00489 
00490     2.  Fixed bug in get.obj.arith when -v la needed to back up to the previous
00491         release, the latest edition in that release wasn't being gotten.
00492 
00493     3.  Fixed bug in AR_power in native.c for 32-bit IEEE complex--ARPOWCR was
00494         being called even when the power was complex type.
00495  
00496 Edition 201:
00497 
00498     1.  Removed cvs log entries in all files except edition.c.
00499 
00500     2.  Added test in 'make update' to NOT update get.obj.arith or result test
00501         case files for release branch updates.  Added associated note to README.
00502 
00503     3.  Fixed bugs in get.obj.arith associated with getting development
00504         editions.  Version string now contains the release number but only
00505         if the release number is greater than 1.
00506 
00507     4.  Deleted support for cray-2 and cray-x4 everywhere.
00508 
00509     5.  Deleted calls to native PVP library/intrinsic functions.  All such
00510         functions are now simulated.  Note that this implicitly eliminates
00511         support for the cmcs code generator products.
00512 
00513     6.  Removed save/clear/restore of ar_CRAY_64_trunc_bits from intrin.c and
00514         mpp_sim.c.  Save/clear/restore of ar_CRAY_64_trunc_bits is applied to
00515         all PVP library/intrinsic function simulation (in cray1_sim.c).
00516 
00517     7.  Removed AR_IEEE_denorm_behavior routine.  Denorm behavior is now 
00518         specified inside corresponding intrinsic evaluation modules (e.g.,
00519         mpp_sim.c).  Added AR_Denorm_Operands_Trap flag and set it for MPP
00520         arithmetic evaluation (in mpp_sim.c).
00521 
00522         Moved all denorm declarations from arith.h to arith.internal.h to
00523         make it invisible to the outside world.
00524 
00525     8.  Defined AR_STAT_SEMIVALID error status bit.  Updated arith.doc to
00526         describe the situations under which this bit is set.
00527 
00528     9.  Restructured the intrinsic folding routines.  Now either intrin.c
00529         or no_intrin.c must be used with the latter causing load-time missing
00530         external messages if intrinsic evaluation routines are called.  Some
00531         intrinsic evaluation routines, such as those for string conversions,
00532         may exist in no_intrin.c.  In any case, these source files contain the
00533         high-level interface routines to intrinsic folding (AR_name routines).
00534 
00535         The high-level interface routines in turn call lower-level routines,
00536         named ar_name, in either native.c or simulate.c.  Those in native.c
00537         ultimately call native (non-Cray system) library routines.  Those in
00538         simulate.c ultimately cause a simulation of Cray system (PVP or MPP)
00539         library routines.
00540 
00541         The lower level ar_name routines in simulate.c now do generic argument
00542         set up via calls to support routines located in specific platform
00543         modules (cray1_sim.c or mpp_sim.c).  After arguments have been set up,
00544         routine ar_sim is called to simulate just the evaluation of the
00545         specific library function for the specific platform.  Finally, routine
00546         ar_get_function_value is called to get the function value from the
00547         appropriate register.
00548 
00549    10.  Fixed AR_convert_str_to_int to call ar_set_invalid_result for overflows
00550         rather than clearing the unused bits.  In some cases, AR_STAT_ZERO
00551         was being set in addition to AR_STAT_OVERFLOW.
00552  
00553    11.  Fixed bug in AR_convert which set AR_STAT_UNDERFLOW for the conversion 
00554         of 0.0 from 64 to 32-bit IEEE float.
00555  
00556    12.  Fixed bug in AR_i32/64norm which was not setting AR_STAT_UNDERFLOW when
00557         the operand bits were not zero, but the normalization process caused 
00558         all coefficient bits to become zero.  Also removed unnecessary test 
00559         for expo < 0 when preceding logic guaranteed it was always >= 0. 
00560 
00561    13.  Changed Makefile naming of arith cpio file in tlc_rel to use the last
00562         two fields in the libm.a what -s version number.
00563 
00564    14.  Changed names of internal non-static routines to always begin with 'ar_'
00565         from 'AR_'.  All user-callable routines should now consistently begin
00566         with 'AR_'.
00567 
00568    15.  Added a description to arith.doc for AR_one and AR_round_int_div.
00569 
00570    16.  Added version number proposal entry points into edition.c.
00571 
00572    17.  Fixed long standing bug in convert.c (ar_ifix64/32) in which zero was
00573         being incorrectly returned when the shift count was greater than the
00574         number of coefficient bits and the rounding mode was not AR_ROUND_ZERO.
00575         It is possible for the rounding to produce a value of 1 after all
00576         coefficient bits have been shifted off.
00577 
00578    18.  Fixed bug in mpp_sim.c in which the CMPULE/T instructions were not
00579         being evaluated correctly.
00580 
00581    19.  In simulate.c corrected the value stored into lcap1 for the call to
00582         defgu2sd to be a character address versus a word address.  This requires
00583         ar_pass_ext_address to pass back a word-to-character shift count if the
00584         external address descriptor is requested.
00585 
00586    20.  Added AR_index, AR_scan, AR_verify, AR_reshape, and AR_transfer as well
00587         as new logical type AR_Logical and associated constants AR_const_true
00588         and AR_const_false in arith.h.
00589 
00590    21.  Modified F90 routine ARSELRK to use PRESENT(P/R) and call the library
00591         routine with the correct argument/s.
00592 
00593 Edition 54:
00594 
00595     1.  Changes in Makefile, get.obj.arith, and README to support the creation
00596         and use of release branches.  This includes new Makefile targets
00597         edition, update, revision, and new_release.  Also get.obj.arith now
00598         uses the -R option to translate a product version to an arith release
00599         number (default is still the development version except for cft77 which
00600         is forced to release 1).
00601 
00602     2.  Added 'cam' to the list of supported products in get.obj.arith.
00603 
00604     3.  Added logic to IEEE floating point arithmetic routines to return
00605         AR_STAT_UNDEFINED for denormalized operands and the denorm behavior
00606         flag is not AR_Denorms_Keep (i.e., an assumed MPP compiler).  This
00607         logic needs to exist in release 1 of arith to support updates to the
00608         "frozen" cft77_m compilers (and in particular fix SPR 79459).  This
00609         logic will be changed in release 2 of arith to more explicitly trap
00610         on denorm operands based on new values for the denorm behavior flag.
00611 
00612 Edition 53:
00613 
00614     1.  Support for the Fortran 90 modulo and selected_real_kind now exists for
00615         PVP, MPP, and Solaris compilers along with associated confidence tests.
00616         AR_Modulo is the name of the arith routine that supports the Fortran 90
00617         modulo intrinsic.  This distinguishes it from AR_modulo which was the
00618         Fortran 77 mod intrinsic which could return different results.
00619 
00620     2.  Added AR_mod to be the Fortran 77 mod intrinsic and deprecated AR_modulo
00621         to (hopefully) eliminate maintenance questions and user confusion.
00622         AR_mod is identical to the old AR_modulo for now.
00623 
00624     3.  Made changes to Makefile to build arith data files using modulo and
00625         selected_real_kind from libfi.a.
00626 
00627 Edition 52:
00628 
00629     1.  Added support for floating modulus and selected_real_kind for cf90_m
00630         only.  This is a temporary edition to support MPP compilers only.
00631 
00632 Edition 51:
00633 
00634     1.  Fixed LDS and STS MPP instruction simulation to NOT return
00635         AR_STAT_UNDEFINED (AR_convert returns this when converting a 64-bit NaN
00636         to 32-bit but this exception cannot occur on MPP hardware when simply
00637         loading/storing a NaN value).
00638 
00639     2.  Added characters to the internal ar_eval_lib_edition variable so that
00640         it can be printed by the what command.
00641 
00642 Edition 50:
00643 
00644     1.  Changed AR_[ic]fcmp* routines to be statically declared inside compare.c
00645         and removed their interface description from arith.internal.h.
00646 
00647     2.  Changed the IEEE compare algorithms to not use subtract since they must
00648         be exact and not overflow or underflow.
00649 
00650     3.  Changed mpp_sim.c to use AR_compare for the CMPTxx instructions.
00651 
00652     4.  Upgraded sim_mpp_gen.f to compile and run with latest cft90 and
00653         generate correct data for/from the HLOG, HEXP, and HSQRT routines.
00654         Also added more test cases for string to float conversions.
00655 
00656     5.  Changed version numbering to drop the leading zero (version 50 will be
00657         stored as 50, not 050).
00658 
00659     6.  Changed packaging of arith data files.  The default location is now
00660         the same directory as libm[v2].a on PVP systems and NO default on nonPVP
00661         systems.  The CRAYLIBS environment variable is now used for both PVP
00662         and MPP simulation.  Created a lib subdirectory below arith and
00663         $(USS)/arith containing platform subdirectories with the associated
00664         data file in each of these.  Removed the .a files from the cpio files.
00665         Added arith_c1.mh and arith_mpp.mh to the corresponding cpio files.
00666 
00667 Edition 49:
00668 
00669     1.  Force ar_IEEE_denorm_behavior default to be consistent with intrinsic
00670         simulation platform (Keep on sparc, +0.0 on MPP, illegal on C1).  Removed
00671         default declaration from miscmath.c.  Replaced logic inside
00672         AR_IEEE_denorm_behavior to simply validate the input value and return
00673         a nonzero value if not equal to the default.
00674 
00675     2.  Fixed constant value for 'A' in arith_mpp.s.
00676 
00677     3.  Fixed subscripting bugs in cray1_sim.c and mpp_sim.c where libm[v2]
00678         version is consistency checked against that in arith_c1/mpp.
00679 
00680     4.  Added support for 64-bit pointers in arith.h, cvt.c, math.c and
00681         miscmath.c.  These are required for Triton.
00682 
00683     5.  Made all calls to PRINTMSG have 8 arguments to support cft77 message
00684         routine.
00685 
00686     6.  Fixed end-case in mpp_sim.c because the CMPTxx instructions are exact
00687         and do not over/underflow.
00688 
00689     7.  Fixed spelling in arith.mk.
00690 
00691 Edition 48:
00692 
00693     1.  Fixed bug in ar_power (in mpp_sim.c) in which switch statement was
00694         based on basetype rather than resulttype.
00695 
00696     2.  Modified get.obj.arith to return latest validated version for each
00697         platform rather than the global validated version.  Created 'latest'
00698         file in platform subdirectories in arith directory.
00699 
00700 Edition 47:
00701 
00702     1.  Fixed floating input conversion bug in which an all zero mantissa
00703         produced an AR_STAT_UNDEFINED.
00704 
00705 Edition 46:
00706 
00707     1.  Fixed floating input conversion bug in which a zero exponent still
00708         produces an AR_STAT_UNDEFINED if exponent is signed (e.g. 1.0e+0).
00709 
00710 Edition 45:
00711 
00712     1.  Added simulation interface identifiers in case later changes are
00713         necessary.
00714 
00715     2.  Converted register numbers to mnemonic names in mpp_sim.c
00716 
00717     3.  Fixed floating input conversion bug in which a zero exponent (e.g. 1.0e0)
00718         produced an AR_STAT_UNDEFINED because leading zeroes are skipped.
00719 
00720     4.  Make sure that the libm[v2].a returned by get.obj.arith RW by owner.
00721 
00722     5.  Add AR_NOINTRIN_ERROR routine to ctgen.c to resolve fintrin.o external.
00723 
00724 Edition 44:
00725 
00726     1.  get.obj.arith removes cray[12].o from arith.a when non-native intrinsic
00727         evaluation is used (eliminates trapmathlibabort missing external
00728         message).  Removes misc_sim.o for native intrinsic evaluation.
00729         Tests for version >= 43 when deleting dummy_dc.o (vs dc_dummy.o).
00730 
00731     2.  Added simulation support for MPP LDS, STS, and S8ADDQ instructions.
00732 
00733     3.  Began using actual 32-bit algorithms for HEXP, HLOG, and HSQRT.
00734 
00735     4.  Updated README file to eliminate the USM mod creation.
00736 
00737     5.  Made complex division a pseudo-intrinsic such that native version (in
00738         intrin.c) calls a locally compiled Fortran routine which yields whatever
00739         the native algorithm might be (except for sparc which uses the previous
00740         algorithm).  The simulation version (in misc_sim.c) currently uses the
00741         previous algorithm (originally in math.c).  This may need to be replaced
00742         in the future with a simulation of what F90 does for the targeted system.
00743         Fixes SPRs 78056 and 78123.
00744 
00745     6.  Added complex division confidence tests (in itgen.c and confidence.c,
00746         added itgen.c support file itgenf.f).
00747 
00748     7.  Added 'ar_' prefix to the shift_{left,right} functions in misc_sim.c.
00749 
00750 Edition 43:
00751 
00752     1.  All known bugs are fixed (except complex divides for Solaris cft90).
00753 
00754     2.  Added support for -v ne and -v va to get.obj.arith.  (Also -v xn is
00755         used in Makefile to build confidence test executables.)
00756 
00757     3.  Split intrinsic evaluation into 4 basic modes with no cross-over
00758         permitted.  The modes are:
00759 
00760         a) No intrinsic function evaluation available   (no_intrin.o)
00761         b) Use native intrinsic library routines                (intrin.o)
00762         c) Simulate PVP intrinsic library routines      (cray1_sim.o)
00763         d) Simulate MPP intrinsic library routines      (mpp_sim.o)
00764         
00765         Get.obj.arith uses the code generator, language, and target options
00766         to construct an arith.a capable of folding in exactly one of these
00767         modes.  The names in parentheses are the modules in the constructed
00768         arith.a corresponding to these modes.
00769 
00770         Modes a, c, and d should not require libm.a (libmv2.a) to be loaded
00771         into the compiler (at least for folding).
00772 
00773     4.  Allow 32 and 64-bit non-complex floats to be passed as operands
00774         to AR_leadz, AR_popcnt, and AR_poppar.  The operand type is no
00775         longer required to match the result type.  Also, updated messages
00776         with changes suggested by Pubs.
00777 
00778     5.  Increased output precision for float_to_string.
00779 
00780     6.  Add support for base 2 string_to_int conversions
00781 
00782     7.  Cleared part1 and part2 for 32-bit integer results in bits.c and
00783         math.c (ar_add_integer, ar_subtract_integer, bitoper, ar_dblshift,
00784         AR_leadz, AR_popcnt, AR_poppar).
00785 
00786     8.  Added 'c++' to the list of supported languages in get.obj.arith.
00787         Currently, the arith.a constructed for c++ does not support any
00788         math library intrinsic function evaluation (mode 3a above).
00789 
00790     9.  Add minimal support for 16-bit ints.  Functions supported are
00791         AR_convert, AR_status, and all functions which permit operands
00792         or results of any size integer value.
00793 
00794    10.  Also, fixed AR_convert_str_to_int which claimed to work for any
00795         integer type, but really didn't.  Part of the problem with
00796         this function (the value of the ar_bits_used argument) was
00797         "fixed" by a change in documentation.
00798 
00799    11.  Eliminated simulation of strtod/strtold in favor of the lower level
00800         routine defgu2sd.  An interface routine, ar_unpack_float_str is
00801         called to unpack a string into simulated Cray words prior to
00802         simulating defgu2sd.
00803 
00804    12.  Made a small optimization by using hardware shift instructions if
00805         running on a Cray (in shift_left/right).
00806 
00807    13.  Added a cpio target in Makefile.  This creates the different cpio
00808         files necessary for packaging arith with Craylibs and copies them
00809         out to the TLC_REL directory on USS.  Added file arith.mk to be
00810         included in the cpio files.
00811 
00812    14.  Added the following simulation error messages (see arith.msg for
00813         details):
00814 
00815         2014 - simulated intrinsic interface error
00816         2015 - unsupported new intrinsic function
00817         2016 - potentially different intrinsic function values (warning only)
00818         2017 - intrinsic routine not loaded
00819 
00820         These are intended to support version consistency checks when arith
00821         is built into compilers in the field.
00822 
00823    15.  Changed a bunch of file and routine names from *_ieee* to *_mpp*
00824         since it appears likely that future IEEE Cray architectures may not
00825         exactly produce the same results as the MPP.  If they happen to
00826         always produce identical results, then internal links to MPP versions
00827         can be used.
00828 
00829    16.  Moved conv routines into the results directory.  The conv
00830         subdirectory is no longer needed.
00831 
00832    17.  Removed dc_dummy.c.  Added dummy_dc.f in order to more easily
00833         maintain the Fortran naming conventions on multiple platforms.
00834 
00835    18.  Added HSQRT, HLOG, and HEXP to arith_mpp.s.  These are still just
00836         interfaces to the 64-bit algorithms.  However, the next edition of
00837         arith should automatically start using the actual 32-bit algorithms
00838         when they are put in the next Craylibs_m package.
00839 
00840    19.  Added external char variables AR_libmv2 and AR_arith_data.  These
00841         contain a null string if simulation is not used.  Otherwise,
00842         AR_libmv2 contains the libmv2.a version information, including the
00843         edition number (e.g., 81002).  AR_arith_data contains the arith.a
00844         edition number of the arith_c1/mpp file (i.e., the arith.a edition
00845         number when the data file was built).
00846 
00847 Edition 42:
00848 
00849     1.  Added PVP and MPP intrinsic simulation for libm and floating input
00850         conversion routines.
00851 
00852     2.  Modified get.obj.arith to turn on simulation for ccg and mppcg code
00853         generators but disable it for rcg and cmcs.
00854 
00855     3.  Extensive modifications were made to the makefile for consistent
00856         packaging, easier testing, and to provide debug versions of arith.
00857         Added make targets to generate the intrinsic simulation data files
00858         and to generate the test data for the simulation confidence tests.
00859 
00860     4.  Updated the README, arith.msg, and arith.doc files.
00861 
00862     5.  Modified existing confidence tests to work with/without simulation
00863         enabled.  Added simulation confidence tests.
00864 */
00865 
00866 
00867 static char USMID [] = "\n%Z%%M%        %I%     %G% %U%\n";
00868 static char rcsid [] = "$Id: edition.c,v 1.4 2003-12-11 22:19:18 eraxxon Exp $";
00869 /* $Log: not supported by cvs2svn $ */
00870 /* Revision 1.3  2003/02/20 01:53:11  fzhao */
00871 /* *** empty log message *** */
00872 /*
00873  * Revision 1.2  2002/07/18 17:31:13  fzhao
00874  * nothing important,remove nested common symbol.
00875  *
00876  * Revision 1.1.1.1  2002/05/22 20:06:18  dsystem
00877  * Initial import
00878  *
00879  * Revision 2.46  1997/07/22 23:31:22  gbt
00880  * MIPS NaNs are the opposite of SPARC/T90-IEEE/Alpha NaNs: the
00881  * latter has the high bit of the mantissa clear for signalling
00882  * NaNs, and set for quiet ones; the former is the other way
00883  * around.
00884  *
00885  * Revision 2.45  1997/06/17  17:46:19  gbt
00886  * - Add status setting for AR_STAT_INEXACT in IEEE normalization.
00887  * - Makefile cleanup -- don't execute "target" if not on a Cray
00888  *   machine, and in the "arith.a:" target, copy the arith.h file
00889  *   into a "common" subdirectory.  I had moved the common files
00890  *   into a "common" subdir in the USS directory in edition 234,
00891  *   and modified the get.obj.arith script accordingly, but I
00892  *   needed to do the same thing in the build directory structure,
00893  *   so that doing a "get.obj.arith -v xn ..." would work.
00894  * - Remove the use of /cray/uss/compiler/cost/bin/validate from
00895  *   the get.obj.arith script.
00896  *
00897  * Revision 2.44  1997/06/02  19:14:16  gbt
00898  * Add AR_ibits(), and the corresponding internal tests.
00899  *
00900  * Revision 2.43  1997/05/01  15:25:18  gbt
00901  * Remove the use of <ctype.h> in strcvt.c.  This allows us
00902  * to compile arith with 9.x #include files, and link it
00903  * with 8.x libraries, and have everything work right.  It
00904  * doesn't hurt wide-character compatibility, because there
00905  * is quite a bit of code in strcvt.c that is incompatible
00906  * with wide characters already.
00907  *
00908  * Revision 2.42  1997/04/25  02:56:02  gbt
00909  * 1.  Missed some modules that needed additions for 8-bit and
00910  *     16-bit integers.
00911  * 2.  Add full support for determining the host architecture.
00912  * 3.  Fix some minor divots in float-->string conversions.
00913  * 4.  Add AR_ishft() and AR_ishftc(), for the corresponding f90
00914  *     intrinsics, and add code to testint.c to test these.
00915  *
00916  * Revision 2.41  1997/04/02  00:04:31  gbt
00917  * Add support for 8-bit and 16-bit integers.  Update testing programs
00918  * appropriately.
00919  *
00920  * Revision 2.40  1997/03/17  21:19:11  gbt
00921  * 1.  Bring in the MIPS quad changes from Rich Shapiro.
00922  * 2.  Fix 703309 -- non-base-10 int-to-str conversions yielded
00923  *     trash.
00924  * 3.  Add appropriate casts to cray1_sim.c and mpp_sim.c, to
00925  *     remove some warnings about mistyped assignments.
00926  *
00927  * Revision 2.39  1996/12/12  20:31:44  gbt
00928  * Undo the change that made negating IEEE 0.0 not yield -0.0 any more.  The
00929  * standard says that negating 0.0 is *supposed* to yield -0.0.  We hadn't
00930  * read the IEEE standard completely.
00931  *
00932  * Revision 2.38  1996/11/05  18:33:00  gbt
00933  * Remove the MIPS hack in native.c for the INDEX(), SCAN(), and VERIFY()
00934  * intrinsics.
00935  *
00936  * Revision 2.37  1996/10/30  21:01:21  gbt
00937  * Add a -n option to remote-builds.csh, to tell it not to do a
00938  * "make delete" before proceeding with the builds.  Also, update
00939  * edition.c -- I had forgotten to do so on the last few changes.
00940  *
00941  * Revision 2.36  1996/10/29  21:53:39  gbt
00942  * - Clean up the code in various spots so that the Solaris and IRIX
00943  *   compilers don't emit any warnings any more.
00944  * - Really support the IRIX platform.
00945  * - Allow re-updating of the current USS edition.
00946  * - Move the USS arith.{doc,h,msg}.* files into a "common" subdirectory
00947  *   (aesthetics -- makes the directory easier to look at).
00948  * - Make sure all the files installed on USS have group-write access.
00949  * - Clean up get.obj.arith -- the indentation had gotten a little
00950  *   odd over the years.
00951  *
00952  * Revision 2.35  1996/10/28  23:10:04  gbt
00953  * Expand the simulated stack size for Cray-1 style simulation, from 2 kwords
00954  * to 10 kwords.  It wasn't big enough for the needs of all the intrinsics in
00955  * the 3.0 arith data file.
00956  *
00957  * Revision 2.34  1996/10/11  22:20:34  gbt
00958  * Make _numargs() work properly on T3E.  The SSIB and DSIB weren't properly
00959  * set up before beginning simulation, nor was the CI register correct on
00960  * entry to the simulated intrinsic code.
00961  *
00962  * Revision 2.33  1996/10/03  19:24:26  gbt
00963  * Fix some preprocessing problems having to do with the _Solaris #if tests.
00964  *
00965  * Revision 2.32  1996/09/23  21:21:46  gbt
00966  * - Simulate byte-manipulation instructions properly for a T3E.
00967  * - Remove pdbgint support for MPP -- it couldn't have been made to
00968  *   work anyway.
00969  * - Add environment variable control of ar_disasm debugging for MPP.
00970  *
00971  * Revision 2.31  1996/09/10  21:46:11  gbt
00972  * Allow for building on a TS (only building _on_ one, not _for_ one).
00973  *
00974  * Revision 2.30  1996/08/30  19:39:50  gbt
00975  * - Modifications to the self-tests to allow for correct results on
00976  *   TS-IEEE (they've never been right before this).
00977  * - Continuing Makefile cleanup.
00978  * - MIPS real*16 support from Rich Shapiro.
00979  * - Added support for printing integers from MPP library code during
00980  *   simulation.
00981  *
00982  * Revision 2.29  1996/08/20  20:07:35  gbt
00983  * Go back to using the UNICOS 8.3 #include files for C-90 and Y-MP.  There's
00984  * no apparent way to safely use the 9.x ones, and still allow people to link
00985  * an arith.a thus compiled with 8.x libraries.
00986  *
00987  * Revision 2.28  1996/08/15  23:09:12  gbt
00988  * More closely follow the IEEE rules regarding NaNs as operands and results.
00989  * Also, do a little fixup in the Makefile.  The YMP tests all pass now.
00990  *
00991  * Revision 2.27  1996/07/03  23:14:26  gbt
00992  * For version comparison between the arith data file and the
00993  * libm.a when simulating, do a better job of figuring out the
00994  * libm.a version.  Also did some prettification of the version
00995  * checking code in mpp_sim.c, and a minor change to allow for
00996  * creating the MPP simulation data file on a C-90.
00997  *
00998  * Revision 2.26  1996/06/19  23:32:16  gbt
00999  * Oops.  Send store_mpp_word() the _address_ of the register you
01000  * want to simulate storing, not the contents of it.  Sheesh.
01001  *
01002  * Revision 2.25  1996/06/12  18:20:16  gbt
01003  * Large amounts of Makefile beautification, after Mark Cruciani
01004  * had some targeting problems.
01005  * Add a -z switch to get.obj.arith, to return sources, and add
01006  * a new target "install_source" to the Makefile, to install them
01007  * where the -z logic is expecting to find them.  This new target
01008  * should be made after "update" is made.
01009  * Take out the -X1 for T3E builds temporarily.  It's causing
01010  * problems with the currently-available hardware.
01011  *
01012  * Revision 2.24  1996/05/31  21:09:51  gbt
01013  * 1. IRIX/MIPS changes.  Add fintrin_irix.f, fintrin_dc_irix.f,
01014  *    fintrin_irix_f77.f.  Update Makefile to understand about IRIX,
01015  *    and build the three new modules.  Update #ifdefs in confidence.c,
01016  *    miscmath.c, native.c, simulate.c, strcvt.c, and test_ar_intrin.c
01017  *    to do MIPS like we do Solaris.
01018  *
01019  * 2. Fix a problem in AR_make_complex (miscmath.c), where aliasing
01020  *    result and op2 led to wrong results.
01021  *
01022  * 3. Set up the simulated stack differently in mpp_sim.c.  For the
01023  *    T3E, we had the simulated DSIB between the simulated frames of
01024  *    the caller and callee.  The latter two need to abut, or arg
01025  *    addressing when simulating routines with more than 6 arguments
01026  *    won't work.
01027  *
01028  * 4. Replace a sequence of '|' expressions in ar_convert_str_to_float()
01029  *    with a sequence of '|=' assignments.  The former is subject to
01030  *    expression reordering which, although it apparently hasn't yet
01031  *    occurred, would get the arguments to _defgu2sd() in the wrong
01032  *    order if it happened.
01033  *
01034  * Revision 2.23  1996/05/10  22:02:22  ghg
01035  * Edition 223:
01036  *     1.  Fix for spr 100775.  Insure that 64 bit addressing is used
01037  *         in  Ar_put_real_address().  Previous cast to long it was
01038  *         getting only the low order 32 bits.
01039  *
01040  *     2.  Changed get.obj.arith to provide release 2 arith versions for
01041  *         cft90 6.x or 6.X products.
01042  *
01043  * Revision 2.22  1996/05/01  22:00:10  ghg
01044  *     1.  Changed header processing for cld a.out again.  Do move
01045  *         down over header after all segments are processed.  Insure
01046  *         that segment ids can't be redefined by an undefined segment.
01047  *
01048  *     2.  Perform right shifts using macro with unsigned longs so no
01049  *         sign extension takes place, even for Cray systems that sign
01050  *         extend right shifts.  The SHRIGHT64X macro specifically does
01051  *         sign extension and will continue to sign extend.
01052  *
01053  *     3.  Changed definitions of parcels to unsigned longs to insure
01054  *         that sign extension doesn't take place.
01055  *
01056  * Revision 2.21  1996/04/23  23:42:44  ghg
01057  *  '********************************************************'
01058  *  Please send following email...
01059  *  To: krz, bcn, mwm, knaak, homer, rlf, srp, pmk, bhj, kik, tbb, jk, gbt, lew, svc, ghg, mac
01060  *
01061  *  Subject: New edition `cat release`.`cat edition` of arith
01062  *
01063  *  Edition `cat release`.`cat edition` of arith is now available in $(USSARITH)/R`cat release`.
01064  *  It can be accessed with get.obj.arith as follows:
01065  *
01066  *  "      get.obj.arith -v ne ..."
01067  *
01068  *  It contains the following enhancements:
01069  * Edition 221:
01070  *     1.  Changed segment definitions for cld a.out header. Defined dynamically
01071  *         rather than static assignements.
01072  *     2.  Spr 100747: Mod by Greg Titus.
01073  *               arith.internal.h:   Add ar_crnd128() declaration.
01074  *               cvt.c:              Call ar_crnd128() for 128-bit Cray floating
01075  *                                   point round_int_div.
01076  *               convert.c:          Add ar_crnd128() body.
01077  *     3.  SPR 101290: Mod by Greg Titus.
01078  *               mpp_sim.c:          Fix invalid type punning (IEEE complex to
01079  *                                   IEEE float) in ar_pass_arg_value().  We
01080  *                                   were passing a misaligned 32-bit IEEE
01081  *                                   float to ar_convert_to_float() when we
01082  *                                   were doing the real part of a 32-bit IEEE
01083  *                                   complex.
01084  *
01085  * Revision 2.20  1996/04/17  18:22:50  ghg
01086  * Edition 220:
01087  *     1.  Changed Makefile to build Cray-t3d and Cray-t3e targets.
01088  *
01089  *     2.  Changes for native versions of Cray-t3d and Cray-t3e that use
01090  *         Solaris simulation routines.
01091  *
01092  * Revision 2.19  1996/02/07  23:39:49  jhw
01093  * Edition 219:
01094  *     1.  Changed mpp_sim.c to handle the segment identifier differences between
01095  *         the t3d and t3e.  open_intrinsics_file now looks at the segment
01096  *      type field of the file header instead of the id, and
01097  *      load/store_mpp_word now looks at variables corresponding to the
01098  *      new segment identifiers.  T3E data files built with mppldr should
01099  *      not be used.  Those produced by cld will be handled (hopefully) by
01100  *      this mod.
01101  *
01102  *     2.  Changed arith_mpp.s to add the 32-bit SCANI, VERIFYI, and INDEXI
01103  *         intrinsics to the list of those needing to have their fcd arguments
01104  *      converted to byte-lengths.
01105  *
01106  * Revision 2.18  1996/01/03  22:15:46  jhw
01107  * Edition 218:
01108  *     1.  Triton-IEEE 0162 and 0163 divide instructions had the operands
01109  *         reversed for the divide calls.  This fixes SPRs: 95451, 96747,
01110  *      95582, 97309, 99176, 99366.
01111  *
01112  * Revision 2.17  1995/12/19  16:51:03  jhw
01113  * 12/19/95 jhw:
01114  *     1.  MPP 0x18 instructions were being called illegal and arith was aborting.
01115  *         These are now disassembled and ignored.  For 0x18c (RPCC), the rtc
01116  *      is moved into ra.  This was in mpp_sim.c.
01117  *
01118  *     2.  The mpp intrinsic simulations for index, scan, verify, and selected_
01119  *         real_kind for 32-bit integers were not supported.  The appropriate
01120  *      entry points are now in place however.  This was in arith_mpp.s
01121  *         and simulate.c
01122  *
01123  * Revision 2.16  1995/12/11  15:56:51  jhw
01124  * 12/11/95 jhw:  This change fixes incorrect simulation of the 01xx4 (S-reg
01125  * load/store) instructions.  Only two-parcels of the 3-parcel address
01126  * expressions were being used.  This fixes SPR 98417.
01127  *
01128  * Revision 2.15  1995/11/30  21:34:37  jhw
01129  * 11/30/95 jhw:  Changed cray1_sim.c so that the 174[1,2,3] instructions were
01130  * being simulated correctly.  This fixes reshape sprs: 96747, 95628, 95627,
01131  * 97309, and 97842.  Also modified get.obj.arith to manually set permissions
01132  * when copying arith.a.  Makefile was modified to reference newer libraries
01133  * for building arith data files, and I added the capability of bumping a new
01134  * version to latest.
01135  *
01136  * Revision 2.14  1995/11/13  20:25:46  jhw
01137  * Edition 214:
01138  *
01139  *     1.  Fixed bug in ar_itoc128 in which the resulting exponent was 1 too big.
01140  *         (jhw) Altered this function to return the correct status.  This fixes
01141  *      SPR 90659.
01142  *
01143  *     2.       Fixed bugs in ar_sim simulation of 026/027 instructions that were
01144  *      causing unsimulated instruction errors and not using new A-reg operand
01145  *      instructions.
01146  *
01147  *     3.       Removed rounding in conversion of Cray 128-bit to 64-bit floating point
01148  *      since all compilers internally just truncate (keep the first 64-bits).
01149  *
01150  *     4.  Added tbb and svc to the change list, made the default uss results
01151  *         repository to be in cray/uss/a6/jhw, and changed the c90 and triton
01152  *      cc and libs setup to the correct directories in Makefile.
01153  *
01154  * Revision 2.13  1995/09/26  20:40:19  jk
01155  * Added check for compatible floating point format between result type and
01156  * opened arith data file.  Made /opt/ctl/craylibs[_m]/craylibs[_m] first
01157  * default location for arith.  Removed libm.a existance requirement for
01158  * all cross compilations.  Added integer*8 versions of native power
01159  * functions.  Added simulation of remaining cray-ts[,ieee] instructions
01160  * (currently unused but lowers risk if future Craylibs uses them).  Changed
01161  * arith_mpp.s and mpp_sim.c to interface to either T3D or T3E libraries.
01162  *
01163  * Revision 2.12  1995/08/18  17:18:00  jk
01164  * Fixed some bugs in cray1_sim.c; added simulation for Vi Vj*[LU]Vk.
01165  *
01166  * Revision 2.11  1995/08/16  22:09:24  jk
01167  * Added full 128-bit IEEE support; removed all internal arith declarations
01168  * from arith.h; implemented partial support for multi-targetable arith
01169  * library; added support for native cray-ts, cray-ts-ieee.
01170  *
01171  * Revision 2.10  1995/04/18  23:17:52  jk
01172  * Fixed cast of int to 64-bit pointer problem; fixed problem with nonpackage
01173  * versions of Craylibs.  Begin using Craylibs 2.0 for arith testing.
01174  *
01175  * Revision 2.9  1995/02/08  19:55:22  jk
01176  * Added support for non-package versions of Craylibs and asynchronous
01177  * updating of the arith data file.  Changed severity of 2016 message to
01178  * Logfile_Warning.  Allow 128-bit IEEE float types and 64-bit integer
01179  * types on sparc systems but internally work in reduced precision.  Fixed
01180  * MPP simulation bugs--allow 46-bit integer type and set default dynamic
01181  * rounding modes and types.  Added cray-ts as target in get.obj.arith.
01182  * Changed c++ product in get.obj.arith to be same as scc except for rcg.
01183  * No longer clear upper 8 bits of 64-bit pointers.
01184  *
01185  * Revision 2.8  1995/01/04  16:06:20  jk
01186  * Test for j==0 in simulation of Ai [PQZ]Sj.  Changed DCMPLX to CMPLX where used
01187  * since cft90 no longer recognizes DCMPLX.
01188  *
01189  * Revision 2.7  1994/12/20  22:39:20  jk
01190  * Allow slop in stores also.  Copy allowable ORE logic to mpp_sim.c.
01191  *
01192  * Revision 2.6  1994/12/16  18:02:18  jk
01193  * Added simulation of remaining PVP instructions except for system calls,
01194  * monitor mode instructions, half-precision multiply, and shared register usage.
01195  * Fixes problem when reshape calls %LDSV which uses some previously unsimulated
01196  * vector instructions.
01197  *
01198  * Revision 2.5  1994/12/13  23:00:44  jk
01199  * Fixed problem with simulated vector load in memchr reaching outside fcd
01200  * memory area.
01201  *
01202  * Revision 2.4  1994/12/13  14:51:38  jk
01203  * Changed back arg in _F90_{INDEX,SCAN,VERIFY} calls to be a pointer rather
01204  * than a value.  Added declarations in arith.h for arith_vers_name,
01205  * arith_vers_ID, and arith_vers_number.  Moved definition of EDITION macro
01206  * from edition.c to cc command line.  Changed Makefile to build arith data
01207  * files on either YMP or C90 (in Y-mode).
01208  *
01209  * Revision 2.3  1994/11/29  23:37:14  jk
01210  * Added AR_cabs and ar_divide_complex to no_intrin.c.  Added 3 NULL args
01211  * to 2016 PRINTMSG call.  Fixed ar_cvt_str_to_float to return
01212  * AR_STAT_UNDERFLOW.  Added what-lines to arith_c1/mpp.s.
01213  *
01214  * Revision 2.2  1994/10/19  20:54:52  jk
01215  * Fix bug in native.c--x**C was calling ARPOWCR.
01216  *
01217  * Revision 2.1  1994/10/18  19:48:35  jk
01218  * Major restructuring of intrinsic evaluation.  Added AR_index, AR_scan,
01219  * AR_verify, AR_reshape, and AR_transfer.  Added type AR_Logical.  Added
01220  * AR_SEMI_VALID status value.  Removed AR_IEEE_denorm_behavior.  Removed
01221  * support for Cray-2 and Cray-XMP.  Changed internal names to consistently
01222  * begin with 'ar_' while all external user-callable names begin with 'AR_'.
01223  * See edition.c Edition 201 notes for a complete list of changes.
01224  *
01225  * Revision 2.0  1994/08/11  16:21:30  jk
01226  * Increment development version to 2.0
01227  *
01228  * Revision 1.53  1994/08/10  22:01:58  jk
01229  * Make changes to support release 1 branch; added logic to trap on denormalized
01230  * operands (for MPP only) in IEEE arithmetic routines; added product cam to
01231  * get.obj.arith.
01232  *
01233  * Revision 1.52  1994/08/05  22:27:03  jk
01234  * Add support for Fortran 90 modulo and selected_real_kind intrinsics.
01235  *
01236  * Revision 1.51  1994/06/16  18:06:58  jk
01237  * Fix bug in mpp_sim.c to prevent premature AR_STAT_UNDEFINED returned when
01238  * LDS instruction loads a NaN value.  Add what-line chars in edition.c.
01239  *
01240  * Revision 1.50  1994/06/09  14:17:15  jk
01241  * Bug fixes, made AR_[ic]fcmp* routines internal, avoid using subtract for
01242  * IEEE compares (they must be exact and not over/underflow), changed version
01243  * numbering to 2-digit number, changed packaging for simulation (arith.a will
01244  * go in the compiler packages, arith data file will go in craylibs package
01245  * and be installed in the same location as libm.a/libmv2.a).
01246  *
01247  * Revision 1.49  1994/06/01  21:57:25  jk
01248  * Fixed problems to correctly handle denorm behavior, correctly test for
01249  * version consistency with libm/libmv2, and interface with cft77's version
01250  * of PRINTMSG.
01251  *
01252  * Revision 1.48  1994/05/27  18:34:46  jk
01253  * Fix bug in AR_power in mpp_sim.c for 32-bit float base operand--a 64-bit
01254  * value was being returned.
01255  *
01256  * Revision 1.47  1994/05/23  21:57:18  jk
01257  * Fixed bug in ar_unpack_float_str in which 0e1 was failing.
01258  *
01259  * Revision 1.46  1994/05/19  22:34:21  jk
01260  * Fixed another bug str to float conversions with 0 exponents.
01261  *
01262  * Revision 1.45  1994/05/19  16:51:17  jk
01263  * Add simulation interface ids to support future mods.  Converted register
01264  * #s to mnemonics in mpp_sim.c.  Fixed '..E0' bug in AR_convert_str_to_float.
01265  * Misc Makefile, get.obj.arith, confidence test fixes.
01266  *
01267  * Revision 1.44  1994/05/17  15:13:22  jk
01268  * Added simulation for the LDS, STS, and S8ADDQ MPP instructions plus the
01269  * actual 32-bit algorithms for HEXP, HLOG, and HSQRT.  Made complex division
01270  * a pseudo-intrinsic (native version in intrin.c, simulation version in
01271  * misc_sim.c) to fix SPRs 78056 and 78123.  Misc cleanup and bug fixes.
01272  *
01273  * Revision 1.43  1994/05/04  14:50:13  jk
01274  * Split intrinsic folding into 4 non-overlapping modes--none, native, PVP
01275  * simulation, and MPP simulation.  Allow 32/64-bit non-complex floats in
01276  * AR_leadz, AR_popcnt, and AR_poppar.  Add base 2 string_to_int conversion.
01277  * Clear part1 and part2 in integer results in bits.c and math.c.  Added
01278  * minimal support for 16-bit integers.  Began edition log in edition.c
01279  * for editions with large numbers of changes (see edition.c).
01280  *
01281  * Revision 1.42  1994/04/07  18:41:18  jk
01282  * Added PVP and MPP intrinsic simulation for libm and floating input conversion
01283  * routines.  Modified get.obj.arith to turn on simulation for ccg and mppcg
01284  * code generators but disable it for rcg and cmcs.  Extensive modifications
01285  * were made to the makefile for consistent packaging, easier testing, and
01286  * to provide debug versions of arith.  Updated the README, arith.msg, and
01287  * arith.doc files.  Modified existing confidence tests to work with/without
01288  * simulation enabled.  Added simulation confidence tests.  Added make targets
01289  * to generate the intrinsic simulation data files and to generate the test
01290  * data for the simulation confidence tests.
01291  *
01292  * Revision 1.41  1994/02/10  17:10:42  pmk
01293  * Fix problems with 32-bit IEEE intrinsic folding feature begun with last
01294  * version. Should affect only SPARC.
01295  *
01296  * Revision 1.40  1994/02/04  03:18:27  pmk
01297  * Fix SPARC/Solaris intrinsic folding so that 32-bit IEEE Fortran intrinsics
01298  * are not folded by conversion to/from 64-bit.
01299  *
01300  * Revision 1.39  1994/02/02  20:17:02  krz
01301  * Fix conversion of unsigned int to IEEE (SPR 74885).  Incorrect member was
01302  * accessed when determining unsignedness of integer type.
01303  *
01304  * Revision 1.38  1993/12/01  01:39:01  pmk
01305  * Change complex division as requested by GSF to special-case zero
01306  * imaginary parts in denominators (only) -- SPR 70472.
01307  * Also fix conversions from 64-bit IEEE to 32-bit IEEE -- SPR 70042.
01308  *
01309  * Revision 1.37  1993/11/30  00:38:22  krz
01310  * Add support for Cray single-precision floating-point truncation.  (SPR
01311  * 70042)
01312  *
01313  * Allow user-specified behavior for IEEE denorms.  (SPR 66025)
01314  *
01315  * Provide functions to convert a host 64-bit int to an AR_DATA representation.
01316  *
01317  * Update arith.msg with changes made by pubs (Chris Brewster).
01318  *
01319  * Fix bug in AR_status for 32-bit IEEE floats (AR_STAT_ZERO was not reported
01320  * correctly).
01321  *
01322  * Fix AR_convert_float_to_str to correctly report Nan, +Inf, and -Inf for IEEE
01323  * floating-point numbers.
01324  *
01325  * Fix ar_convert_to_float (called by AR_convert) to allow conversions from
01326  * integral values to type AR_Float_Cray1_64_F.  Previously,
01327  * AR_STAT_INVALID_TYPE was returned for such conversions.
01328  *
01329  * Revision 1.36  1993/11/12  02:08:39  krz
01330  * 1.  Add a new function, AR_make_complex, which creates a complex number from
01331  * two floating-point numbers.
01332  *
01333  * 2.  Update the messages file (arith.msg) with changes made by Pubs.
01334  *
01335  * 3.  Fix the result from function AR_one for 32-bit ints.  The unused upper
01336  * 32 bits of the word are now zeroed.
01337  *
01338  * 4.  Fix the result from AR_convert_str_to_float for 32-bit floats when
01339  * executing on the Suns.  The result was previously put into the wrong half of
01340  * the 64-bit word.
01341  *
01342  * Revision 1.35  1993/10/14  01:49:56  krz
01343  * The directory for arith has moved on the file server.  Update references to
01344  * the arith directory in all files.
01345  *
01346  * Add support to build under the "solaris" environment.
01347  *
01348  * Revision 1.34  1993/09/23  00:57:35  krz
01349  * Add function AR_subtract_ptr_ptr to perform pointer minus pointer
01350  * evaluations.
01351  *
01352  * Change function AR_add_ptr_int to return an error status (it previously
01353  * always returned AR_STAT_OK).
01354  *
01355  * Don't make reference to ARERPFIX on platforms where it doesn't exist.
01356  *
01357  * Change uses of macros CRAY, CRAY1, and CRAY2 to the preferred
01358  * (standard-conforming) macros _CRAY, _CRAY1, and _CRAY2.
01359  *
01360  * Added a dummy AR_INTERNAL_ERROR function to ctgen.c to avoid the unsatisfied
01361  * external.  Also link in PRINTMSG_dummy.c.
01362  *
01363  * Revision 1.33  1993/09/03  20:18:57  pmk
01364  * Fix cross-compiled exponentiation folding (IEEE on Cray hardware).
01365  *
01366  * Revision 1.32  1993/09/01  23:29:31  pmk
01367  * Revamp intrinsic processing, especially exponentiation, to support double
01368  * precision complex and to use system math libraries. Also fix a rounding bug
01369  * in convert.c.
01370  *
01371  * Revision 1.31  1993/08/12  20:55:41  krz
01372  * Add support to issue internal error messages through the PRINTMSG interface to the message system.
01373  *
01374  * Revision 1.30  1993/08/05  17:46:00  krz
01375  * 1.  Added AR_convert_hex_str_to_float function.
01376  *
01377  * 2.  Updated build procedures in README file to use generation compiler, library, and header files as jointly agreed upon by the compiler integrators.  (Don't have to worry about signgam anymore!)
01378  *
01379  * 3.  Added copyright notices and USMIDs to source files.
01380  *
01381  * 4.  Added function prototypes for AR_c2fapprox in cray2_dummy.c and matherr in itgen.c.
01382  *
01383  * 5.  Added descriptions for AR_convert_str_to_int, AR_convert_int_to_str, AR_convert_str_to_float, and AR_convert_float_to_str to arith.doc.
01384  *
01385  * 6.  Clean up, standardize, and document the return values for AR_convert_str_to_int and AR_convert_str_to_float.
01386  *
01387  * Revision 1.29  1993/07/13  18:25:21  gbt
01388  * For reals raised to integer powers, AR_power() was checking the size of
01389  * the base, rather than the power, to determine whether the power was a
01390  * 32 bit int or a 64 bit one.  The bug was introduced when 32 bit integer
01391  * support was added.
01392  *
01393  * Revision 1.28  1993/07/01  23:41:52  krz
01394  * This is a small commit to test the automatic mail feature of CVS.
01395  *
01396  * Revision 1.27  1993/06/15  00:59:27  krz
01397  * Add a dummy entry for the Cray-2 floating-point approximation function (and
01398  * associated data) for use on non-Cray-2 machines (to save code/data space
01399  * when the library is linked into executables on those machines).  Add a
01400  * couple of workarounds for bugs found in the gcc compiler and library
01401  * headers.
01402  *
01403  * Revision 1.26  1993/05/20  02:59:28  krz
01404  * 1.  Fix return value for AR_modulo, which incorrectly reported overflow in
01405  *     cases where the numerator was negative and the result was zero.
01406  *
01407  * 2.  Fix sprintf() calls for floats on non-Cray hosts.  While the ar_ieee64
01408  *     union member is the same size as a double on a Sun, the parameter
01409  *     passing mechanism is different for structs and doubles.  Thus explicit
01410  *     casts are necessary.  Also, make all the format strings on those calls
01411  *     right.
01412  *
01413  * 3.  Comparisons of infinities with infinities are now fixed.
01414  *
01415  * Revision 1.25  1993/05/17  17:50:48  krz
01416  * Add a new function, AR_add_ptr_int to perform pointer arithmetic.
01417  * Fix some integral conversions that weren't sign extending correctly.
01418  * AR_status now allows and correctly handles 24 and 8 bit ints.
01419  *
01420  * Revision 1.24  1993/04/19  20:39:02  gbt
01421  * 1. Make sure all file errors increment the error counter in confidence.c.
01422  * 2. Add 32 bit signed and unsigned integer support.
01423  * 3. Modify testint.c to allow it to run on (SPARC) Suns.
01424  *
01425  * Revision 1.23  1993/04/09  22:36:35  pmk
01426  * Minor fixes to Cray double precision floating add and double precision
01427  * exponentiation, to yield proper results in end-case error situations.
01428  *
01429  * Revision 1.22  1993/04/09  03:51:04  krz
01430  * Change the data format for IEEE 32-bit floats so that the value is maintained in the lower 32 bits of a 64-bit word.  Change the data format for IEEE 64-bit complex (2 32-bit floats) to match the format used at runtime.  This change should be completely transparent since nobody is using these data types (yet).
01431  *
01432  * Revision 1.21  1993/03/11  23:29:15  pmk
01433  * Add new AR_round_int_div routine, and fix Cray-1 truncated multiplies
01434  * in the high-level interface.
01435  *
01436  * Revision 1.20  1993/02/09  21:07:19  pmk
01437  * Correct an abort in intrin.c when folding IEEE arithmetic on the Crays;
01438  * also, continue development and testing of 32-bit IEEE arithmetic.
01439  *
01440  * Revision 1.19  1993/02/04  23:40:25  pmk
01441  * Speed up integer multiplication, addition, and string conversion.
01442  *
01443  * Revision 1.18  1993/01/29  01:26:55  krz
01444  * Forgot to update the edition last time.  This is edition 17.
01445  *
01446  * Revision 1.17  1993/01/27  22:52:21  pmk
01447  * Add Cray 128-bit float -> IEEE 64-bit conversion.
01448  *
01449  * Revision 1.16  1992/12/29  03:47:04  krz
01450  * Move the removal of the overflow flag for unsigned integer multiplication from ar_multiply_integer to AR_multiply so that AR_convert_str_to_int can check for overflow during conversion.
01451  *
01452  * Revision 1.15  1992/12/12  04:43:20  pmk
01453  * Implement AR_exp, AR_log, and AR_power routines for the evaluation
01454  * of exponentiation in intrin.c.
01455  *
01456  * Revision 1.14  1992/12/03  23:21:24  pmk
01457  * Add new AR_cabs function for bitwise accuracy with library.
01458  *
01459  * Revision 1.13  1992/11/25  21:23:52  krz
01460  * 1.  Add tests for conversions from integral operands to integral results.
01461  * 2.  When converting to integral value, return overflow status bit when
01462  *     original operand value can not be represented in the result type.
01463  * 3.  Fix integral addition, subtraction, division, and modulus to return
01464  *     correct status when the result and an operand are the same object.
01465  *
01466  * Revision 1.12  1992/11/18  01:26:14  pmk
01467  * Fix complex absolute value and integer division overflow checking.
01468  *
01469  * Revision 1.11  1992/11/06  17:35:20  pmk
01470  * Break up bitopers.c, and support square root.
01471  *
01472  * Revision 1.10  1992/10/24  01:12:38  pmk
01473  * Compile with optimization enabled.
01474  *
01475  * Revision 1.9  1992/10/21  23:35:33  pmk
01476  * Correct status returns in complex operations.
01477  *
01478  * Revision 1.8  1992/10/19  19:52:20  pmk
01479  * Provide conversions between Cray and IEEE format floating-point numbers.
01480  *
01481  * Revision 1.7  1992/10/17  00:56:08  krz
01482  * Add arith.doc to repository.  Add AR_Int_46_U back to arith.h.  Fixed bugs in AR_convert_str_to_int.
01483  *
01484  * Revision 1.6  1992/10/16  23:08:34  krz
01485  * Finished testing of integral operations.  Changed return status bits from integral operations where necessary.
01486  *
01487  * Revision 1.5  1992/10/12  16:19:56  pmk
01488  * Version 004 - fixes from Kent to bitopers.c and testint.c.
01489  *
01490  * Revision 1.4  1992/10/08  01:17:35  pmk
01491  * Version 003 - a fix to conversion from Kent in bitopers.c.
01492  *
01493  * Revision 1.3  1992/09/23  21:55:54  pmk
01494  *
01495  * Revision 1.2  1992/09/23  21:53:59  pmk
01496  * Correct minor problems with packaging. This is version V002. All
01497  * problems reported with V001 should have been addressed.
01498  *
01499  * Revision 1.1  1992/09/22  20:01:10  pmk
01500  * Set up build procedures.
01501  *
01502  */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines