# Mathematical Acceleration Subsystem (MASS) libraries for AIX - previous versions

## Downloadable files

## Abstract

The MASS libraries for AIX consist of a set of mathematical functions for C, C++, and Fortran-language applications that are tuned for specific POWER architectures.

## Download Description

Each successive MASS version includes the material from previous versions that has not been changed, except that: versions 3.0 and up do not include the library that runs only on POWER2 processors; versions 3.2 and up do not include the AIX 4 version of the POWER4 library; and versions 4.3 and up no longer include the AIX 4 libraries.

Version 1.0

- Introduces a library of mathematical intrinsic functions, libmass.a, that offers tuned alternatives for functions in the system math library supplied with AIX.

Version 2.1

- Adds two new libraries of vector function subroutines: libmassv.a for general use, and libmassvp2.a for use only on POWER2 machines. These vector subroutines compute result vectors as functions of their argument vectors.

Version 2.2

- Adds functions to the vector libraries.

Version 2.3

- Includes improved scalar sqrt and rsqrt functions.

- Adds more vector functions.

- Introduces a Fortran source file, libmassv.f, containing simple loops for the MASS vector functions that can be used on non-IBM systems.

Version 2.4

- Adds a tanh built-in function to the scalar library libmass.a.

- Slightly improves the sinh and x**y functions.

- Adds short-precision vector functions and vector atan2 to the general vector library libmassv.a.

- Revises the pow (C/C++) and x**y (Fortran) functions to accept negative x arguments with integer y arguments.

Version 2.5

- Makes the general vector library, libmassv.a, safe for multi-threaded applications where MASS functions might be called by two threads simultaneously.

- Further tunes some of these vector functions.

- Adds a new POWER3 vector library, libmassvp3.a (also thread-safe), with some routines tuned for the POWER3 architecture.

- Adds a dnint routine to the scalar library, libmass.a.

Version 2.6

- Makes the scalar library, libmass.a, safe for multi-threaded applications where MASS functions might be called by two threads simultaneously.

- Shows minor changes in performance of the scalar library.

Version 2.7

- Replaces twelve functions (forms of exp, log, sin, and cos) in the general vector library, libmassv.a, with versions rewritten for better short-precision performance and better performance for the POWER3 architecture.

- Includes the new functions in the architecture-specific vector libraries.

Version 3.0

- Augments the existing libmass.a, libmassv.a, and libmassvp3.a libraries with 64-bit versions of all functions, except vatan2 and vsatan2. The MASS libraries will now link to 32-bit or 64-bit applications.

- Adds a new POWER4 vector library, libmassvp4.a, that includes implementations of the vdiv, vsdiv, vrec, and vsrec functions that have been tuned for the POWER4 architecture.

- Removes the functions vdsign, vdfloat, and vidint from the libraries.

Version 3.2

- Adds POWER3- and POWER4-tuned versions of vacos and vasin to libmassvp3.a and libmassvp4.a, respectively.

- Adds POWER4-tuned versions of vlog, vexp, vrsqrt, vsqrt, and vtan, as well as their single-precision versions, vslog, vsexp, vsrsqrt, vssqrt, and vstan, to libmassv4.a.

- Fixes various bugs.

- Removes the AIX 4 version of libmassvp4.a (POWER4 machines do not run AIX 4).

Version 3.2.1

- Corrects some misspelled entry-point names.

- Updates the LICENSE and mass.html files.

- Adds some missing prototypes to massv.h.

Version 3.3

- Replaces vsqrt, vssqrt, vexp, vlog, vrec, and vdiv in libmassvp4.a with consistent versions.

- Improves the algorithms used by vrec and vdiv in libmassvp4.a.

- Adds new consistent POWER4-tuned vsin and vcos routines to libmassvp4.a. (There are some performance differences for short vectors.)

Version 3.4

- Adds the following new POWER4-tuned functions to libmassv.a, libmassvp3.a, and libmassvp4.a: vcosh, vscosh, vexpm1, vsexpm1, vlog10, vslog10, vlog1p, vslog1p, vpow, vspow, vsasin, vsacos, vsinh, vssinh, vtanh, vstanh.

- Improves the algorithms used by vsrec and vsdiv in libmassvp4.a to give better performance on GP POWER4 machines.

- Contains various bug fixes.

- Replaces the following routines in libmassvp4.a with consistent versions: vacos, vasin, vatan2, vrsqrt, vscos, vsdiv, vexp, vsrec, vssin. (There are some performance differences for short vectors.)

Version 4.1

- Adds the file mass.include to provide the Fortran interface block for the rsqrt scalar function.

- Adds the file mass.h to provide the C/C++ prototype for the dnint scalar function.

- Revises the vcosisin and vscosisin functions to allow use on AIX 4.x, where the _Complex data type is not supported.

- Adds the file libmassv.c to provide the vector source library code for C/C++.

Version 4.3

- Adds a new vector library libmassvp5.a that includes the following routines tuned for POWER5: vcbrt vrcbrt, vpopcnt4, vpopcnt8, vrqdrt, vqdrt, vrsqrt, vsqrt, vscbrt, vsrcbrt, vsrqdrt, vsqdrt, vsrsqrt, vssqrt. These new routines are also included in the other vector libraries.

- Improves the performance of vcbrt, vrcbrt, vqdrt, vscbrt, vsrcbrt, and vsqdrt in libmassv.a, libmassvp3.a, and libmassvp4.a.

- Adds new routines expm1 and log1p to libmass.a, and improves the performance of atan, cos, cosh, ** (Fortran), pow (C/C++), exp, sin, sinh, tan, and tanh in libmass.a.

- Adds the following routines, tuned for POWER4, to libmassvp4.a: atan, cosh, exp, expm1, log1p, pow, sin, cos, sinh, tan, tanh, vcbrt, vqdrt, vrcbrt,

- Contains various bug fixes.

Version 4.4

- Adds a new vector library libmassvp6.a that contains the full set of 60 MASS vector routines tuned for POWER6: vacos, vacosh, vasin, vasinh, vatan2, vatanh, vcbrt, vcos, vcosh, vcosisin, vdint, vdiv, vdnint, vexp, vexpm1, vlog, vlog10, vlog1p, vpopcnt4, vpopcnt8, vpow, vqdrt, vrcbrt, vrec, vrqdrt, vrsqrt, vsin, vsincos, vsinh, vsqrt, vtan, vtanh, vsacos, vsacosh, vsasin, vsasinh, vsatan2, vsatanh, vscbrt, vscos, vscosh, vscosisin, vsdiv, vsexp, vsexpm1, vslog, vslog10, vslog1p, vspow, vsqdrt, vsrcbrt, vsrec, vsrqdrt, vsrsqrt, vssin, vssincos, vssinh, vssqrt, vstan, vstanh.

- Adds 25 new single-precision scalar routines to libmass.a: acosf, acoshf, asinf, asinhf, atan2f, atanf, cbrtf, copysignf, atanhf, cosf, coshf, erfcf, erff, expf, expm1f, hypotf, lgammaf, log10f, log1pf, logf, powf, sinf, sinhf, tanf, tanhf.

- Adds 15 new double-precision scalar routines to libmass.a: acos, acosh, anint, asin, asinh, atanh, cbrt, copysign, cosisin, erf, erfc, hypot, lgamma, log10, sincos.

- Contains various bug fixes.

Version 6.0

- Adds a new vector library libmassvp7.a that contains the following routines tuned for POWER7 processors (functions new in this version are followed by *): vacos, vacosh, vasin, vasinh, vatan2, vatan*, vatanh, vcbrt, vcos, vcosisin, vcosh, vdint, vdiv, vdnint, verfc*, verf*, vexp2*, vexp2m1*, vexp, vexpm1, vhypot*, vlgamma*, vlog10, vlog1p, vlog2*, vlog21p*, vlog, vpow, vqdrt, vrcbrt, vrec, vrqdrt, vrsqrt, vsin, vsincos, vsinh, vsqrt, vtan, vtanh, vsacos, vsacosh, vsasin, vsasinh, vsatan2, vsatan*, vsatanh, vscbrt, vscos, vscosisin, vscosh, vsdiv, vserfc*, vserf*, vsexp2*, vsexp2m1*, vsexp, vsexpm1, vshypot*, vslog10, vslog1p, vslog2*, vslog21p*, vslog, vspow, vsqdrt, vsrcbrt, vsrec, vsrqdrt, vsrsqrt, vssin, vssincos, vssinh, vssqrt, vstan, vstanh, vpopcnt4, vpopcnt8.

- Adds a new SIMD library libmass_simdp7.a that contains the following routines tuned for POWER7 processors (all these functions are new in this version): acosd2, asind2, atan2d2, atand2, atanhd2, cbrtd2, cosd2, coshd2, divd2, erfcd2, erfd2, exp2d2, exp2m1d2, expd2, expm1d2, hypotd2, lgammad2, log10d2, log1pd2, log2d2, log21pd2, logd2, powd2, qdrtd2, rcbrtd2, recipd2, rqdrtd2, rsqrtd2, sind2,

sincosd2, sinhd2, sqrtd2, tand2, tanhd2, acosf4, acoshf4, asinf4, asinhf4, atan2f4, atanf4, atanhf4, cbrtf4, cosf4, coshf4, divf4, erfcf4, erff4, expf4, exp2f4, expm1f4, exp2m1f4, hypotf4, log10f4, log1pf4, log2f4, log21pf4, logf4, powf4, qdrtf4, rcbrtf4, recipf4, rqdrtf4, rsqrtf4, sinf4, sincosf4, sinhf4, sqrtf4, tanf4, tanhf4.

## Prerequisites

If you are using any of the following IBM compilers, be aware that a version of the MASS libraries is shipped with the compiler. For these, follow the normal support process for your compiler.

* IBM XL C/C++ Enterprise Edition for AIX, V7.0 or higher

* IBM XL C Enterprise Edition for AIX, V7.0 or higher

* IBM XL Fortran Enterprise for AIX, V9.1 or higher

We recommend using MASS with the IBM XL compilers, since they provide optimizations closely-coupled to MASS for ease of use and enhanced performance.

## Installation Instructions

The MASS libraries are packaged as a compressed tar file, MASS_n.tar.Z, where n denotes the version number (for instance, 3.0). Note that beginning with version 3.0 of MASS, separate packages are required for AIX version 4.3.x and version 5 because of differences in the platforms.

The .tar package contains the following files, depending on the version:

* libmass.a - MASS scalar library.

* libmassv.a - MASS vector library for general use. (v2.1 and up)

* libmassvp3.a - MASS vector library with functions tuned for the POWER3 architecture. (v2.5 and up)

* libmassvp4.a - MASS vector library with functions tuned for the POWER4 architecture. (v3.0 and up)

* libmassvp5.a - MASS vector library with functions tuned for the POWER5 architecture. (v4.3 and up)

* libmassvp6.a - MASS vector library with functions tuned for the POWER6 architecture. (v4.4 and up)

* libmassvp7.a - MASS vector library with functions tuned for the POWER7 architecture. (v6.0 and up)

* libmass_simdp7.a - MASS SIMD library with functions tuned for the POWER7 architecture. (v6.0 and up)

* libmassv.f - Fortran source file of simple loops for the MASS vector functions, for use on non-IBM machines. (v2.3 and up)

* libmassv.c - C/C++ source file of simple loops for the MASS vector functions, for use on non-IBM machines. (v4.1 and up)

* LICENSE - MASS license.

* mass.include - Header file containing the Fortran interface block for the rsqrt scalar function. (v4.1 and up)

* massv.include - Header file containing the Fortran interface blocks for the vector functions. (v4.1 and up)

* mass.h - Header file containing the C/C++ prototype for the dnint scalar function. (v4.1 and up)

* massv.h - Header file containing C/C++ prototypes for the vector functions. (v3.0 and up)

* mass.html - MASS technical documentation. (v3.4 and lower)

The MASS libraries are more convenient to use when they are installed with root access and linked to the conventional /usr/lib/ directory because the user can specify the shorthand -lmass flags during compilation, instead of specifying an explicit path for the libraries. If you have root access, follow the instructions for installing as root. Otherwise, follow the instructions for installing as non-root.

The tar file creates the subdirectory, mass, in the current directory.

Installing as Root

----------------------

1. login as root

-- or --

su to root

2. cd /usr/lpp

MASS files are restored to the directory /usr/lpp/mass.

3. zcat /tmp/MASS_n.tar.Z | tar -xvf -

-- or --

uncompress /tmp/MASS_n.tar.Z

tar -xvf /tmp/MASS_n.tar

4. For version 4.3 and later, do the following, where n is the version (e.g. 4.3):

ln -s /usr/lpp/mass/n/aix5/lib/libmass.a /usr/lib/libmass.a

ln -s /usr/lpp/mass/n/aix5/lib/libmassv.a /usr/lib/libmassv.a

ln -s /usr/lpp/mass/n/aix5/lib/libmassvp3.a /usr/lib/libmassvp3.a

ln -s /usr/lpp/mass/n/aix5/lib/libmassvp4.a /usr/lib/libmassvp4.a

ln -s /usr/lpp/mass/n/aix5/lib/libmassvp5.a /usr/lib/libmassvp5.a

ln -s /usr/lpp/mass/n/aix5/lib/libmassvp6.a /usr/lib/libmassvp6.a

For version 3.4 and earlier, do the following:

ln -s /usr/lpp/mass/libmass.a /usr/lib/libmass.a

ln -s /usr/lpp/mass/libmassv.a /usr/lib/libmassv.a

ln -s /usr/lpp/mass/libmassvp3.a /usr/lib/libmassvp3.a

ln -s /usr/lpp/mass/libmassvp4.a /usr/lib/libmassvp4.a

ln -s /usr/lpp/mass/libmassvp5.a /usr/lib/libmassvp5.a

ln -s /usr/lpp/mass/libmassvp6.a /usr/lib/libmassvp6.a

(This step creates a symbolic link from the library path in the extracted tar file to /usr/lib/ so that users can specify a flag, such as -lmass, to link MASS libraries. Note that not all versions contain all the libraries.)

Installing as Non-Root

----------------------------

1. cd to the directory where the MASS subdirectory should be created

2. zcat /tmp/MASS_n.tar.Z | tar -xvf -

-- or --

uncompress /tmp/MASS_n.tar.Z

tar -xvf /tmp/MASS_n.tar

Note: Some Web browsers will uncompress the tar file before restoring. If the previous instructions result in the error message:

MASS_n.tar.Z: not in compressed format

then try the following:

mv MASS_n.tar.Z to MASS_n.tar

tar -xvf /tmp/MASS_n.tar

## Download package

Download | RELEASE DATE | LANGUAGE | SIZE(Bytes) | Download Options |
---|---|---|---|---|

MASS Version 6.0 for AIX 5 | 10-4-23 | English | 8595419 | FTP |

MASS Version 4.4 for AIX 5 | 6/20/2007 | English | 1628633 | FTP |

MASS Version 4.3 for AIX 5 | 12/5/2005 | English | 1249815 | FTP |

MASS Version 4.1 for AIX 5 | 12/5/2005 | English | 662473 | FTP |

MASS Version 4.1 for AIX 4.3.x | 12/5/2005 | English | 443449 | FTP |

MASS Version 3.4 for AIX 5 | 4/12/2004 | English | 644411 | FTP |

MASS Version 3.4 for AIX 4.3.x | 4/12/2004 | English | 436464 | FTP |

MASS Version 3.3 for AIX 5 | 12/19/2003 | English | 284331 | FTP |

MASS Version 3.3 for AIX 4.3.x | 12/19/2003 | English | 186485 | FTP |

MASS Version 3.2.1 for AIX 5 | 5/29/2003 | English | 301682 | FTP |

MASS Version 3.2.1 for AIX 4.3.x | 5/29/2003 | English | 217471 | FTP |

MASS Version 3.2 for AIX 5 | 11/28/2002 | English | 302195 | FTP |

MASS Version 3.2 for AIX 4.3.x | 11/28/2002 | English | 217619 | FTP |

MASS Version 3.0 for AIX 5 | 12/13/2001 | English | 257531 | FTP |

MASS Version 3.0 for AIX 4.3.x | 12/13/2001 | English | 257531 | FTP |

MASS Version 2.7 | 4/20/2000 | English | 155252 | FTP |

MASS Version 2.6 | 10/18/1999 | English | 127075 | FTP |

MASS Version 2.5 | 1/26/1999 | English | 127031 | FTP |

MASS Version 2.4 | 12/16/1997 | English | 100081 | FTP |

MASS Version 2.3 | 10/31/1996 | English | 94607 | FTP |

MASS Version 2.2 | 12/14/1995 | English | 69099 | FTP |

MASS Version 2.1 | 9/22/1995 | English | 35724 | FTP |

MASS Version 1.0 | 2/23/1995 | English | 23803 | FTP |

## Technical support

If you are using any of the following IBM compilers, be aware that a version of the MASS libraries is shipped with the compiler. For these, follow the normal support process for your compiler.

* IBM XL C/C++ Enterprise Edition for AIX, V7.0 or higher

* IBM XL C Enterprise Edition for AIX, V7.0 or higher

* IBM XL Fortran Enterprise for AIX, V9.1 or higher

The software provided in this Web download is not officially supported by IBM. However, you can send queries to the following e-mail address:

masslib@ca.ibm.com

Segment | Product | Component | Platform | Version | Edition |
---|---|---|---|---|---|

pSeries Unix Servers (incl pSeries Intellistation) | pSeries - Enterprise Servers | ||||

RS/6000 (Servers and Workstations) | RS/6000 Enterprise Servers | ||||

Operating Systems | AIX family | AIX | All Versions |

### Document information

**More support for:**
Mathematical Acceleration Subsystem

Libraries

**Software version:**
1.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 3.0, 3.2, 3.2.1, 3.3, 3.4, 4.1, 4.2, 4.3, 4.4, 6.0

**Operating system(s):**
AIX

**Software edition:**
All Editions

**Reference #:**
4007649

**Modified date:**
26 February 2011