/*- * Copyright (c) 2005 Colin Percival * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted providing that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Redistributions of source code must ensure that the list of * copyright notices is complete, and the lack of a copyright notice * corresponding to a copyrightable contribution or modification may * be taken as an affirmative statement that said contribution or * modification has been placed in the public domain. * 4. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by Colin Percival. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* * $Id: roots.h,v 1.2 2005/07/11 11:31:39 cperciva Exp $ */ #ifndef _TRICL_ROOTS_H_ #define _TRICL_ROOTS_H_ /**T The value {\em TRICL\_ROOTS\_SQRTHALF} is the correctly rounded double precision value of $\sqrt{1 / 2}$. It is approximately $0.435 \cdot 2^{-53}$ larger than the exact value. */ #define TRICL_ROOTS_SQRTHALF 0x1.6A09E667F3BCDp-1 /**T For inputs $2 \leq n \leq 29$, {\em tricl\_roots\_makelut} computes the value $\exp(2 \pi i k / 2^n)$ for all values ${0 \leq k < 2^{n - 2}}$, and stores the real part into {\em LUT}[$2 k$] and the imaginary part into {\em LUT}[$2 k + 1$]. {\em LUT} must be a pointer to sufficient space to store $2^{n - 1}$ doubles. The complex values stored are within $1.5 \cdot 2^{-53}$ of the exact values. */ void tricl_roots_makelut(double * LUT, int n); #endif /* !_TRICL_ROOTS_H_ */