MACfns v4.0 Recent Changes

Here are the most recent changes made to the MACfns product.

MACfns v4.0 Update

Updated Functions

The base ∆CPULEVEL for MACfns remains at 2 or 3 (a 486). While some functions remain at level 0 or 1 (and therefore work on a 386), the majority exploit features of, and require, more advanced processors.

This release contains ∆DTBLENS, which is the basis for the results of ∆MATDS, ∆MATNV, ∆MATSS, and ∆RJUST, and replaces NBLENGTH from the 'ASMFNS' workspace. ∆ROWIOTA replaces ROWFIND from the 'ASMFNS' workspace; it works on numeric as well as character matrices, and is about 1.5-2.5 times faster.

New capability L ∆ROWFIND R flags rows of character array L which contain text R anywhere in the row; it is typically 20 times faster than ∨/R⍷L, and is also faster for the special cases of L^.=R and ∨/L=R.

∆DATEBASE and ∆DATEREP replace DATEBASE and DATEREP from the 'DATES' workspace, but have several advantages, including being typically 30 times faster and returning smaller results. ∆DATE2BAS and ∆DATE2REP are variants for small arguments. ∆DATEPACK and ∆DATEUNP facilitate packing, unpacking, and repacking of YYYY MM DD dates to and from integers in a variety of readable formats.

Improved Documentation

General documentation has been improved with the addition of a GLOSSARY, a summary of INVERSES, the PAPER06 from the 2006 APL User Conference, and additions to ASMFNS.

Sped up Functions

Many functions have slight speedups, with ∆COERCE, ∆DECH, ∆INCH, ∆NOT, and ∆SIGN being up to 20% faster on fpt arguments.

New Functions

Here are the new functions:

∆DATEBASE Compute days since 1Jan1900 from YYYY MM DD dates.
∆DATEPACK Pack YYYY MM DD dates as scalars {per L={0-5}}.
∆DATEREP  Compute YYYY MM DD dates from days since 1Jan1900.
∆DATEUNP  Unpack scalars as YYYY MM DD dates {per L={0-5{,cuspyear}}}.
∆DATE2BAS Compute days since 1Jan1900 from two YYYY MM DD dates.
∆DATE2REP Compute YYYY MM DD dates from two days since 1Jan1900.
∆DTBLENS  Length of rows sans trailing blanks:  +/∨\' '≠⌽R
∆ROWFIND  Flag rows of character L containing vector R:  ∨/R⍷1/L
∆ROWIOTA  Locate rows of R in matrix L; ⎕IO-1 if not found ⍝ ⎕CT=0

Bug Fixes

∆HDIV was fixed to correct a small Boolean inaccuracy, and aCRC1 was fixed to a bug in setting ⎕IO.