This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 0/6] Generate Complex functions from a common template.


This consolidates two patches floating around here.
https://sourceware.org/ml/libc-alpha/2016-06/msg01003.html
and
https://sourceware.org/ml/libc-alpha/2016-06/msg00991.html
into a single patch set, with some minor updates to fix
issues uncovered while testing.

Given that the freeze starts in less than a day.  I do
not oppose holding off until 2.25 development opens.


The intent is to more rapidly support additional float
types, while minimizing the large amount of duplication
which comes from the current build structure.

The first patch simplifies the math/Makefile to more
readily support new types while adding some simple
hooks to start refactoring the large number of files
supporting the _Complex float abi.

The second patch introduces basic template files which
can be overridden via sysdeps, or individually overridden
as is the case when supporting the old alpha ABI. The
trivial complex functions are converted (cabs, carj,
cimag, creal, conj).

The third patch converts the complex sine functions.

The fourth patch converts the complex cosine functions.

The fifth patch converts the complex tangent functions.

The sixth patch converts the remaining 6 complex functions.


Of note is the interactions of NO_LONG_DOUBLE, ldbl-opt,
m68k, alpha, and some minor drift in few functions.

I have run build tests on arm, alpha, ppc64, m68k, and
x86_64 to verify the changes have neither altered
the generated, nor altered the symbols.  I think this
is sufficient to cover all valid configurations still
work and have not changed.

math-type-macros.h hides much of the complexity of the
aliasing for the common case, with cpow10 beings the
exception.  Likewise, some heavily used functions
(i.e more than 5 instances) have a dedicated macro
to minimize the verbosity these patches add.

m68k and alpha override certain files to support
dedicated FP hardware, or old _Complex float ABI.
Appropriate measures are taken to simplify and
minimize redundancy.

Finally, a few functions have some very minor drift
between the float, double, and ldouble variants. I
have preserved these in order to keep my sanity
when validating the generated code has not changed
meaningifully.

Paul E. Murphy (6):
  Refactor part of math Makefile
  Support for type-generic libm function implementations libm
  Convert _Complex cosine functions to generated code
  Convert _Complex sine functions to generated code
  Convert _Complex tangent functions to generated code
  Convert remaining complex function to generated files

 Makeconfig                                  |   2 +-
 math/Makefile                               | 176 +++++++++++++++-------
 math/b_cabs.c                               |  33 +++++
 math/b_cacos.c                              |  59 ++++++++
 math/b_cacosh.c                             |  97 ++++++++++++
 math/b_carg.c                               |  33 +++++
 math/b_casin.c                              |  67 +++++++++
 math/b_casinh.c                             |  76 ++++++++++
 math/b_catan.c                              | 146 +++++++++++++++++++
 math/b_catanh.c                             | 140 ++++++++++++++++++
 math/b_ccos.c                               |  40 +++++
 math/b_ccosh.c                              | 154 +++++++++++++++++++
 math/b_cexp.c                               | 157 ++++++++++++++++++++
 math/b_cimag.c                              |  32 ++++
 math/b_clog.c                               | 122 ++++++++++++++++
 math/b_clog10.c                             | 146 +++++++++++++++++++
 math/b_conj.c                               |  32 ++++
 math/b_cpow.c                               |  33 +++++
 math/b_cproj.c                              |  45 ++++++
 math/b_creal.c                              |  32 ++++
 math/b_csin.c                               | 172 ++++++++++++++++++++++
 math/b_csinh.c                              | 173 ++++++++++++++++++++++
 math/b_csqrt.c                              | 165 +++++++++++++++++++++
 math/b_ctan.c                               | 130 +++++++++++++++++
 math/b_ctanh.c                              | 130 +++++++++++++++++
 math/b_k_casinh.c                           | 213 +++++++++++++++++++++++++++
 math/cabs.c                                 |  32 ----
 math/cabsf.c                                |  28 ----
 math/cabsl.c                                |  28 ----
 math/carg.c                                 |  32 ----
 math/cargf.c                                |  28 ----
 math/cargl.c                                |  28 ----
 math/cimag.c                                |  31 ----
 math/cimagf.c                               |  27 ----
 math/cimagl.c                               |  27 ----
 math/conj.c                                 |  31 ----
 math/conjf.c                                |  27 ----
 math/conjl.c                                |  27 ----
 math/creal.c                                |  31 ----
 math/crealf.c                               |  27 ----
 math/creall.c                               |  27 ----
 math/k_casinh.c                             | 210 --------------------------
 math/k_casinhf.c                            | 212 ---------------------------
 math/k_casinhl.c                            | 219 ----------------------------
 math/s_cacos.c                              |  58 --------
 math/s_cacosf.c                             |  56 -------
 math/s_cacosh.c                             |  94 ------------
 math/s_cacoshf.c                            |  92 ------------
 math/s_cacoshl.c                            |  90 ------------
 math/s_cacosl.c                             |  54 -------
 math/s_casin.c                              |  66 ---------
 math/s_casinf.c                             |  64 --------
 math/s_casinh.c                             |  73 ----------
 math/s_casinhf.c                            |  71 ---------
 math/s_casinhl.c                            |  69 ---------
 math/s_casinl.c                             |  62 --------
 math/s_catan.c                              | 143 ------------------
 math/s_catanf.c                             | 143 ------------------
 math/s_catanh.c                             | 137 -----------------
 math/s_catanhf.c                            | 137 -----------------
 math/s_catanhl.c                            | 141 ------------------
 math/s_catanl.c                             | 147 -------------------
 math/s_ccos.c                               |  40 -----
 math/s_ccosf.c                              |  38 -----
 math/s_ccosh.c                              | 147 -------------------
 math/s_ccoshf.c                             | 147 -------------------
 math/s_ccoshl.c                             | 143 ------------------
 math/s_ccosl.c                              |  36 -----
 math/s_cexp.c                               | 157 --------------------
 math/s_cexpf.c                              | 155 --------------------
 math/s_cexpl.c                              | 153 -------------------
 math/s_clog.c                               | 118 ---------------
 math/s_clog10.c                             | 124 ----------------
 math/s_clog10f.c                            | 122 ----------------
 math/s_clog10l.c                            | 127 ----------------
 math/s_clogf.c                              | 116 ---------------
 math/s_clogl.c                              | 121 ---------------
 math/s_cpow.c                               |  33 -----
 math/s_cpowf.c                              |  31 ----
 math/s_cpowl.c                              |  29 ----
 math/s_cproj.c                              |  44 ------
 math/s_cprojf.c                             |  42 ------
 math/s_cprojl.c                             |  40 -----
 math/s_csin.c                               | 171 ----------------------
 math/s_csinf.c                              | 169 ---------------------
 math/s_csinh.c                              | 166 ---------------------
 math/s_csinhf.c                             | 166 ---------------------
 math/s_csinhl.c                             | 164 ---------------------
 math/s_csinl.c                              | 167 ---------------------
 math/s_csqrt.c                              | 165 ---------------------
 math/s_csqrtf.c                             | 163 ---------------------
 math/s_csqrtl.c                             | 161 --------------------
 math/s_ctan.c                               | 129 ----------------
 math/s_ctanf.c                              | 127 ----------------
 math/s_ctanh.c                              | 129 ----------------
 math/s_ctanhf.c                             | 127 ----------------
 math/s_ctanhl.c                             | 132 -----------------
 math/s_ctanl.c                              | 132 -----------------
 math/test-ildoubl.c                         |  25 ----
 math/test-ildouble.c                        |  25 ++++
 scripts/sysd-rules.awk                      |   5 +-
 sysdeps/alpha/fpu/Makefile                  |  10 ++
 sysdeps/alpha/fpu/s_cacosf.c                |  12 +-
 sysdeps/alpha/fpu/s_cacoshf.c               |  11 +-
 sysdeps/alpha/fpu/s_casinf.c                |  13 +-
 sysdeps/alpha/fpu/s_casinhf.c               |  13 +-
 sysdeps/alpha/fpu/s_catanf.c                |  13 +-
 sysdeps/alpha/fpu/s_catanhf.c               |  13 +-
 sysdeps/alpha/fpu/s_ccosf.c                 |  13 +-
 sysdeps/alpha/fpu/s_ccoshf.c                |  13 +-
 sysdeps/alpha/fpu/s_cexpf.c                 |  13 +-
 sysdeps/alpha/fpu/s_clog10f.c               |  15 +-
 sysdeps/alpha/fpu/s_clogf.c                 |  13 +-
 sysdeps/alpha/fpu/s_cpowf.c                 |  13 +-
 sysdeps/alpha/fpu/s_cprojf.c                |  13 +-
 sysdeps/alpha/fpu/s_csinf.c                 |  13 +-
 sysdeps/alpha/fpu/s_csinhf.c                |  13 +-
 sysdeps/alpha/fpu/s_csqrtf.c                |  13 +-
 sysdeps/alpha/fpu/s_ctanf.c                 |  13 +-
 sysdeps/alpha/fpu/s_ctanhf.c                |  13 +-
 sysdeps/generic/math-type-macros.h          | 159 ++++++++++++++++++++
 sysdeps/ieee754/Makeconfig                  |   6 +
 sysdeps/ieee754/ldbl-opt/cabs.c             |   6 -
 sysdeps/ieee754/ldbl-opt/cabsl.c            |   6 -
 sysdeps/ieee754/ldbl-opt/carg.c             |   6 -
 sysdeps/ieee754/ldbl-opt/cargl.c            |   6 -
 sysdeps/ieee754/ldbl-opt/cimag.c            |   6 -
 sysdeps/ieee754/ldbl-opt/cimagl.c           |   6 -
 sysdeps/ieee754/ldbl-opt/conj.c             |   6 -
 sysdeps/ieee754/ldbl-opt/conjl.c            |   6 -
 sysdeps/ieee754/ldbl-opt/creal.c            |   6 -
 sysdeps/ieee754/ldbl-opt/creall.c           |   6 -
 sysdeps/ieee754/ldbl-opt/math-type-macros.h |  30 ++++
 sysdeps/ieee754/ldbl-opt/s_cacos.c          |   6 -
 sysdeps/ieee754/ldbl-opt/s_cacosh.c         |   6 -
 sysdeps/ieee754/ldbl-opt/s_cacoshl.c        |   6 -
 sysdeps/ieee754/ldbl-opt/s_cacosl.c         |   6 -
 sysdeps/ieee754/ldbl-opt/s_casin.c          |   6 -
 sysdeps/ieee754/ldbl-opt/s_casinh.c         |   6 -
 sysdeps/ieee754/ldbl-opt/s_casinhl.c        |   6 -
 sysdeps/ieee754/ldbl-opt/s_casinl.c         |   6 -
 sysdeps/ieee754/ldbl-opt/s_catan.c          |   6 -
 sysdeps/ieee754/ldbl-opt/s_catanh.c         |   6 -
 sysdeps/ieee754/ldbl-opt/s_catanhl.c        |   6 -
 sysdeps/ieee754/ldbl-opt/s_catanl.c         |   6 -
 sysdeps/ieee754/ldbl-opt/s_ccos.c           |   6 -
 sysdeps/ieee754/ldbl-opt/s_ccosh.c          |   6 -
 sysdeps/ieee754/ldbl-opt/s_ccoshl.c         |   6 -
 sysdeps/ieee754/ldbl-opt/s_ccosl.c          |   6 -
 sysdeps/ieee754/ldbl-opt/s_cexp.c           |   6 -
 sysdeps/ieee754/ldbl-opt/s_cexpl.c          |   6 -
 sysdeps/ieee754/ldbl-opt/s_clog.c           |   6 -
 sysdeps/ieee754/ldbl-opt/s_clog10.c         |   7 -
 sysdeps/ieee754/ldbl-opt/s_clog10l.c        |  10 --
 sysdeps/ieee754/ldbl-opt/s_clogl.c          |   6 -
 sysdeps/ieee754/ldbl-opt/s_cpow.c           |   6 -
 sysdeps/ieee754/ldbl-opt/s_cpowl.c          |   6 -
 sysdeps/ieee754/ldbl-opt/s_cproj.c          |   6 -
 sysdeps/ieee754/ldbl-opt/s_cprojl.c         |   6 -
 sysdeps/ieee754/ldbl-opt/s_csin.c           |   6 -
 sysdeps/ieee754/ldbl-opt/s_csinh.c          |   6 -
 sysdeps/ieee754/ldbl-opt/s_csinhl.c         |   6 -
 sysdeps/ieee754/ldbl-opt/s_csinl.c          |   6 -
 sysdeps/ieee754/ldbl-opt/s_csqrt.c          |   6 -
 sysdeps/ieee754/ldbl-opt/s_csqrtl.c         |   6 -
 sysdeps/ieee754/ldbl-opt/s_ctan.c           |   6 -
 sysdeps/ieee754/ldbl-opt/s_ctanh.c          |   6 -
 sysdeps/ieee754/ldbl-opt/s_ctanhl.c         |   6 -
 sysdeps/ieee754/ldbl-opt/s_ctanl.c          |   6 -
 sysdeps/m68k/m680x0/fpu/b_ccosh.c           |  68 +++++++++
 sysdeps/m68k/m680x0/fpu/b_cexp.c            | 129 ++++++++++++++++
 sysdeps/m68k/m680x0/fpu/b_csin.c            |  59 ++++++++
 sysdeps/m68k/m680x0/fpu/b_csinh.c           |  62 ++++++++
 sysdeps/m68k/m680x0/fpu/s_ccosh.c           |  76 ----------
 sysdeps/m68k/m680x0/fpu/s_ccoshf.c          |   3 -
 sysdeps/m68k/m680x0/fpu/s_ccoshl.c          |   3 -
 sysdeps/m68k/m680x0/fpu/s_cexp.c            | 136 -----------------
 sysdeps/m68k/m680x0/fpu/s_cexpf.c           |   3 -
 sysdeps/m68k/m680x0/fpu/s_cexpl.c           |   3 -
 sysdeps/m68k/m680x0/fpu/s_csin.c            |  67 ---------
 sysdeps/m68k/m680x0/fpu/s_csinf.c           |   3 -
 sysdeps/m68k/m680x0/fpu/s_csinh.c           |  69 ---------
 sysdeps/m68k/m680x0/fpu/s_csinhf.c          |   3 -
 sysdeps/m68k/m680x0/fpu/s_csinhl.c          |   3 -
 sysdeps/m68k/m680x0/fpu/s_csinl.c           |   3 -
 185 files changed, 3265 insertions(+), 7804 deletions(-)
 create mode 100644 math/b_cabs.c
 create mode 100644 math/b_cacos.c
 create mode 100644 math/b_cacosh.c
 create mode 100644 math/b_carg.c
 create mode 100644 math/b_casin.c
 create mode 100644 math/b_casinh.c
 create mode 100644 math/b_catan.c
 create mode 100644 math/b_catanh.c
 create mode 100644 math/b_ccos.c
 create mode 100644 math/b_ccosh.c
 create mode 100644 math/b_cexp.c
 create mode 100644 math/b_cimag.c
 create mode 100644 math/b_clog.c
 create mode 100644 math/b_clog10.c
 create mode 100644 math/b_conj.c
 create mode 100644 math/b_cpow.c
 create mode 100644 math/b_cproj.c
 create mode 100644 math/b_creal.c
 create mode 100644 math/b_csin.c
 create mode 100644 math/b_csinh.c
 create mode 100644 math/b_csqrt.c
 create mode 100644 math/b_ctan.c
 create mode 100644 math/b_ctanh.c
 create mode 100644 math/b_k_casinh.c
 delete mode 100644 math/cabs.c
 delete mode 100644 math/cabsf.c
 delete mode 100644 math/cabsl.c
 delete mode 100644 math/carg.c
 delete mode 100644 math/cargf.c
 delete mode 100644 math/cargl.c
 delete mode 100644 math/cimag.c
 delete mode 100644 math/cimagf.c
 delete mode 100644 math/cimagl.c
 delete mode 100644 math/conj.c
 delete mode 100644 math/conjf.c
 delete mode 100644 math/conjl.c
 delete mode 100644 math/creal.c
 delete mode 100644 math/crealf.c
 delete mode 100644 math/creall.c
 delete mode 100644 math/k_casinh.c
 delete mode 100644 math/k_casinhf.c
 delete mode 100644 math/k_casinhl.c
 delete mode 100644 math/s_cacos.c
 delete mode 100644 math/s_cacosf.c
 delete mode 100644 math/s_cacosh.c
 delete mode 100644 math/s_cacoshf.c
 delete mode 100644 math/s_cacoshl.c
 delete mode 100644 math/s_cacosl.c
 delete mode 100644 math/s_casin.c
 delete mode 100644 math/s_casinf.c
 delete mode 100644 math/s_casinh.c
 delete mode 100644 math/s_casinhf.c
 delete mode 100644 math/s_casinhl.c
 delete mode 100644 math/s_casinl.c
 delete mode 100644 math/s_catan.c
 delete mode 100644 math/s_catanf.c
 delete mode 100644 math/s_catanh.c
 delete mode 100644 math/s_catanhf.c
 delete mode 100644 math/s_catanhl.c
 delete mode 100644 math/s_catanl.c
 delete mode 100644 math/s_ccos.c
 delete mode 100644 math/s_ccosf.c
 delete mode 100644 math/s_ccosh.c
 delete mode 100644 math/s_ccoshf.c
 delete mode 100644 math/s_ccoshl.c
 delete mode 100644 math/s_ccosl.c
 delete mode 100644 math/s_cexp.c
 delete mode 100644 math/s_cexpf.c
 delete mode 100644 math/s_cexpl.c
 delete mode 100644 math/s_clog.c
 delete mode 100644 math/s_clog10.c
 delete mode 100644 math/s_clog10f.c
 delete mode 100644 math/s_clog10l.c
 delete mode 100644 math/s_clogf.c
 delete mode 100644 math/s_clogl.c
 delete mode 100644 math/s_cpow.c
 delete mode 100644 math/s_cpowf.c
 delete mode 100644 math/s_cpowl.c
 delete mode 100644 math/s_cproj.c
 delete mode 100644 math/s_cprojf.c
 delete mode 100644 math/s_cprojl.c
 delete mode 100644 math/s_csin.c
 delete mode 100644 math/s_csinf.c
 delete mode 100644 math/s_csinh.c
 delete mode 100644 math/s_csinhf.c
 delete mode 100644 math/s_csinhl.c
 delete mode 100644 math/s_csinl.c
 delete mode 100644 math/s_csqrt.c
 delete mode 100644 math/s_csqrtf.c
 delete mode 100644 math/s_csqrtl.c
 delete mode 100644 math/s_ctan.c
 delete mode 100644 math/s_ctanf.c
 delete mode 100644 math/s_ctanh.c
 delete mode 100644 math/s_ctanhf.c
 delete mode 100644 math/s_ctanhl.c
 delete mode 100644 math/s_ctanl.c
 delete mode 100644 math/test-ildoubl.c
 create mode 100644 math/test-ildouble.c
 create mode 100644 sysdeps/alpha/fpu/Makefile
 create mode 100644 sysdeps/generic/math-type-macros.h
 create mode 100644 sysdeps/ieee754/Makeconfig
 delete mode 100644 sysdeps/ieee754/ldbl-opt/cabs.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/cabsl.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/carg.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/cargl.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/cimag.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/cimagl.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/conj.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/conjl.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/creal.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/creall.c
 create mode 100644 sysdeps/ieee754/ldbl-opt/math-type-macros.h
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_cacos.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_cacosh.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_cacoshl.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_cacosl.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_casin.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_casinh.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_casinhl.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_casinl.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_catan.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_catanh.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_catanhl.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_catanl.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_ccos.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_ccosh.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_ccoshl.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_ccosl.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_cexp.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_cexpl.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_clog.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_clog10.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_clog10l.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_clogl.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_cpow.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_cpowl.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_cproj.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_cprojl.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_csin.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_csinh.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_csinhl.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_csinl.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_csqrt.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_csqrtl.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_ctan.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_ctanh.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_ctanhl.c
 delete mode 100644 sysdeps/ieee754/ldbl-opt/s_ctanl.c
 create mode 100644 sysdeps/m68k/m680x0/fpu/b_ccosh.c
 create mode 100644 sysdeps/m68k/m680x0/fpu/b_cexp.c
 create mode 100644 sysdeps/m68k/m680x0/fpu/b_csin.c
 create mode 100644 sysdeps/m68k/m680x0/fpu/b_csinh.c
 delete mode 100644 sysdeps/m68k/m680x0/fpu/s_ccosh.c
 delete mode 100644 sysdeps/m68k/m680x0/fpu/s_ccoshf.c
 delete mode 100644 sysdeps/m68k/m680x0/fpu/s_ccoshl.c
 delete mode 100644 sysdeps/m68k/m680x0/fpu/s_cexp.c
 delete mode 100644 sysdeps/m68k/m680x0/fpu/s_cexpf.c
 delete mode 100644 sysdeps/m68k/m680x0/fpu/s_cexpl.c
 delete mode 100644 sysdeps/m68k/m680x0/fpu/s_csin.c
 delete mode 100644 sysdeps/m68k/m680x0/fpu/s_csinf.c
 delete mode 100644 sysdeps/m68k/m680x0/fpu/s_csinh.c
 delete mode 100644 sysdeps/m68k/m680x0/fpu/s_csinhf.c
 delete mode 100644 sysdeps/m68k/m680x0/fpu/s_csinhl.c
 delete mode 100644 sysdeps/m68k/m680x0/fpu/s_csinl.c

-- 
2.4.11


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]