Commit 05cd811d authored by Nathanael Schaeffer @lgit-1177's avatar Nathanael Schaeffer @lgit-1177
Browse files

Ready for 2.4.1

parent ae9d3b02
......@@ -60,6 +60,10 @@ DOCUMENTATION:
CHANGE LOG:
v2.4.1 (18 Sep 2013)
- performance improvement: analysis with SHT_PHI_CONTIGUOUS is now
on par with synthesis (or better), even for large transforms.
v2.4 (5 Aug 2013)
- new scalar transforms for complex spatial fields: SH_to_spat_cplx()
and spat_cplx_to_SH().
......
......@@ -103,15 +103,6 @@ V fftw_execute_split_dft(shtns->fftc, Vp+NPHI, Vp, ((double*)BpF)+1, ((double*
#endif
V l_2 = shtns->l_2;
alm = shtns->blm[0];
Q double r0 = 0.0;
Q k=0; do { // compute symmetric and antisymmetric parts. (do not weight here, it is cheaper to weight y0)
Q double an = BrF[k*k_inc]; double bn = BrF[k*k_inc +1];
Q double bs = BrF[(NLAT-2-k)*k_inc]; double as = BrF[(NLAT-2-k)*k_inc +1];
Q rer[k] = an+as; ror[k] = an-as;
Q rer[k+1] = bn+bs; ror[k+1] = bn-bs;
Q r0 += (an+as)*wg[k] + (bn+bs)*wg[k+1];
Q k+=2;
Q } while(k < nk*VSIZE2);
V k=0; do { // compute symmetric and antisymmetric parts. (do not weight here, it is cheaper to weight y0)
V double an = BtF[k*k_inc]; double bn = BtF[k*k_inc +1];
V double bs = BtF[(NLAT-2-k)*k_inc]; double as = BtF[(NLAT-2-k)*k_inc +1];
......@@ -126,12 +117,21 @@ V per[k] = an+as; por[k] = an-as;
V per[k+1] = bn+bs; por[k+1] = bn-bs;
V k+=2;
V } while(k < nk*VSIZE2);
Q double r0a = 0.0; double r0b = 0.0;
Q k=0; do { // compute symmetric and antisymmetric parts. (do not weight here, it is cheaper to weight y0)
Q double an = BrF[k*k_inc]; double bn = BrF[k*k_inc +1];
Q double bs = BrF[(NLAT-2-k)*k_inc]; double as = BrF[(NLAT-2-k)*k_inc +1];
Q rer[k] = an+as; ror[k] = an-as;
Q rer[k+1] = bn+bs; ror[k+1] = bn-bs;
Q r0a += (an+as)*wg[k]; r0b += (bn+bs)*wg[k+1];
Q k+=2;
Q } while(k < nk*VSIZE2);
for (k=nk*VSIZE2; k<(nk+NWAY)*VSIZE2-1; ++k) {
Q rer[k] = 0.0; ror[k] = 0.0;
V ter[k] = 0.0; tor[k] = 0.0;
V per[k] = 0.0; por[k] = 0.0;
}
Q Qlm[0] = r0 * alm[0]; // l=0 is done.
Q Qlm[0] = (r0a+r0b) * alm[0]; // l=0 is done.
V Slm[0] = 0.0; Tlm[0] = 0.0; // l=0 is zero for the vector transform.
k = 0;
for (l=0;l<llim;++l) {
......
......@@ -36,7 +36,7 @@ VX void GEN3(_an2,NWAY,SUFFIX)(shtns_cfg shtns, double *BtF, double *BpF, cplx *
double *alm, *al;
double *wg, *ct, *st;
V double *l_2;
long int nk, k, vnlat, l,m;
long int nk, k, l,m;
int k_inc, m_inc;
unsigned m0, mstep;
#ifndef SHT_AXISYM
......@@ -78,7 +78,6 @@ V double poi[NLAT_2 + NWAY*VSIZE2 -1] SSE;
#endif
wg = shtns->wg; ct = shtns->ct; st = shtns->st;
V l_2 = shtns->l_2;
vnlat = ((unsigned) NLAT); // vector size.
for (k=nk*VSIZE2; k<(nk+NWAY)*VSIZE2-1; ++k) { // never written, so this is now done for all m's
Q rer[k] = 0.0; ror[k] = 0.0;
V ter[k] = 0.0; tor[k] = 0.0;
......@@ -99,15 +98,6 @@ V pei[k] = 0.0; poi[k] = 0.0;
#endif
{ // im=0 : dzl.p = 0.0 and evrything is REAL
alm = shtns->blm[0];
Q double r0 = 0.0;
Q k=0; do { // compute symmetric and antisymmetric parts. (do not weight here, it is cheaper to weight y0)
Q double an = BrF[k*k_inc]; double bn = BrF[k*k_inc +1];
Q double bs = BrF[(NLAT-2-k)*k_inc]; double as = BrF[(NLAT-2-k)*k_inc +1];
Q rer[k] = an+as; ror[k] = an-as;
Q rer[k+1] = bn+bs; ror[k+1] = bn-bs;
Q r0 += (an+as)*wg[k] + (bn+bs)*wg[k+1];
Q k+=2;
Q } while(k < nk*VSIZE2);
V k=0; do { // compute symmetric and antisymmetric parts. (do not weight here, it is cheaper to weight y0)
V double an = BtF[k*k_inc]; double bn = BtF[k*k_inc +1];
V double bs = BtF[(NLAT-2-k)*k_inc]; double as = BtF[(NLAT-2-k)*k_inc +1];
......@@ -122,7 +112,16 @@ V per[k] = an+as; por[k] = an-as;
V per[k+1] = bn+bs; por[k+1] = bn-bs;
V k+=2;
V } while(k < nk*VSIZE2);
Q Qlm[0] = r0 * alm[0]; // l=0 is done.
Q double r0a = 0.0; double r0b = 0.0;
Q k=0; do { // compute symmetric and antisymmetric parts. (do not weight here, it is cheaper to weight y0)
Q double an = BrF[k*k_inc]; double bn = BrF[k*k_inc +1];
Q double bs = BrF[(NLAT-2-k)*k_inc]; double as = BrF[(NLAT-2-k)*k_inc +1];
Q rer[k] = an+as; ror[k] = an-as;
Q rer[k+1] = bn+bs; ror[k+1] = bn-bs;
Q r0a += (an+as)*wg[k]; r0b += (bn+bs)*wg[k+1];
Q k+=2;
Q } while(k < nk*VSIZE2);
Q Qlm[0] = (r0a+r0b) * alm[0]; // l=0 is done.
V Slm[0] = 0.0; Tlm[0] = 0.0; // l=0 is zero for the vector transform.
k = 0;
for (l=0;l<llim;++l) {
......
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for SHTns 2.4.
# Generated by GNU Autoconf 2.69 for SHTns 2.4.1.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
......@@ -577,8 +577,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='SHTns'
PACKAGE_TARNAME='shtns'
PACKAGE_VERSION='2.4'
PACKAGE_STRING='SHTns 2.4'
PACKAGE_VERSION='2.4.1'
PACKAGE_STRING='SHTns 2.4.1'
PACKAGE_BUGREPORT=''
PACKAGE_URL='https://bitbucket.org/nschaeff/shtns'
......@@ -1238,7 +1238,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures SHTns 2.4 to adapt to many kinds of systems.
\`configure' configures SHTns 2.4.1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
......@@ -1299,7 +1299,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of SHTns 2.4:";;
short | recursive ) echo "Configuration of SHTns 2.4.1:";;
esac
cat <<\_ACEOF
......@@ -1399,7 +1399,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
SHTns configure 2.4
SHTns configure 2.4.1
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
......@@ -1818,7 +1818,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by SHTns $as_me 2.4, which was
It was created by SHTns $as_me 2.4.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
......@@ -4829,7 +4829,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by SHTns $as_me 2.4, which was
This file was extended by SHTns $as_me 2.4.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
......@@ -4892,7 +4892,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
SHTns config.status 2.4
SHTns config.status 2.4.1
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
......
......@@ -2,7 +2,7 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.62])
AC_INIT([SHTns],[2.4],[],[shtns],[https://bitbucket.org/nschaeff/shtns])
AC_INIT([SHTns],[2.4.1],[],[shtns],[https://bitbucket.org/nschaeff/shtns])
AC_CONFIG_SRCDIR([sht_init.c])
AC_CONFIG_HEADERS([sht_config.h])
target="libshtns.a" # by default, build the library.
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment