From 39e0005e226ed6f04562e9d5d7548782fef81c20 Mon Sep 17 00:00:00 2001
From: John Glover <j@johnglover.net>
Date: Tue, 21 Aug 2012 18:31:07 +0100
Subject: [sndobj] Update SndObj to use FFTW v3 (was using v2). Remove unused
 SndObj files. Whitespace clean up.

---
 src/sndobj/rfftw/putils.c | 560 ----------------------------------------------
 1 file changed, 560 deletions(-)
 delete mode 100644 src/sndobj/rfftw/putils.c

(limited to 'src/sndobj/rfftw/putils.c')

diff --git a/src/sndobj/rfftw/putils.c b/src/sndobj/rfftw/putils.c
deleted file mode 100644
index f696e4c..0000000
--- a/src/sndobj/rfftw/putils.c
+++ /dev/null
@@ -1,560 +0,0 @@
-
-/*
- * Copyright (c) 1997-1999 Massachusetts Institute of Technology
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- */
-
-/*
- * putils.c -- plan utilities shared by planner.c and rplanner.c
- */
-
-/* $Id: putils.c,v 1.1.1.1 2006/05/12 15:14:46 veplaini Exp $ */
-#ifdef FFTW_USING_CILK
-#include <cilk.h>
-#include <cilk-compat.h>
-#endif
-
-#include <fftw-int.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-int fftw_node_cnt = 0;
-int fftw_plan_cnt = 0;
-
-/*
- * These two constants are used for the FFTW_ESTIMATE flag to help
- * create a heuristic plan.  They don't affect FFTW_MEASURE.
- */
-#define NOTW_OPTIMAL_SIZE 32
-#define TWIDDLE_OPTIMAL_SIZE 12
-
-#define IS_POWER_OF_TWO(n) (((n) & ((n) - 1)) == 0)
-
-/* constructors --- I wish I had ML */
-fftw_plan_node *fftw_make_node(void)
-{
-     fftw_plan_node *p = (fftw_plan_node *)
-     fftw_malloc(sizeof(fftw_plan_node));
-     p->refcnt = 0;
-     fftw_node_cnt++;
-     return p;
-}
-
-void fftw_use_node(fftw_plan_node *p)
-{
-     ++p->refcnt;
-}
-
-fftw_plan_node *fftw_make_node_notw(int size, const fftw_codelet_desc *config)
-{
-     fftw_plan_node *p = fftw_make_node();
-
-     p->type = config->type;
-     p->nodeu.notw.size = size;
-     p->nodeu.notw.codelet = (fftw_notw_codelet *) config->codelet;
-     p->nodeu.notw.codelet_desc = config;
-     return p;
-}
-
-fftw_plan_node *fftw_make_node_real2hc(int size,
-				       const fftw_codelet_desc *config)
-{
-     fftw_plan_node *p = fftw_make_node();
-
-     p->type = config->type;
-     p->nodeu.real2hc.size = size;
-     p->nodeu.real2hc.codelet = (fftw_real2hc_codelet *) config->codelet;
-     p->nodeu.real2hc.codelet_desc = config;
-     return p;
-}
-
-fftw_plan_node *fftw_make_node_hc2real(int size,
-				       const fftw_codelet_desc *config)
-{
-     fftw_plan_node *p = fftw_make_node();
-
-     p->type = config->type;
-     p->nodeu.hc2real.size = size;
-     p->nodeu.hc2real.codelet = (fftw_hc2real_codelet *) config->codelet;
-     p->nodeu.hc2real.codelet_desc = config;
-     return p;
-}
-
-fftw_plan_node *fftw_make_node_twiddle(int n,
-				       const fftw_codelet_desc *config,
-				       fftw_plan_node *recurse,
-				       int flags)
-{
-     fftw_plan_node *p = fftw_make_node();
-
-     p->type = config->type;
-     p->nodeu.twiddle.size = config->size;
-     p->nodeu.twiddle.codelet = (fftw_twiddle_codelet *) config->codelet;
-     p->nodeu.twiddle.recurse = recurse;
-     p->nodeu.twiddle.codelet_desc = config;
-     fftw_use_node(recurse);
-     if (flags & FFTW_MEASURE)
-	  p->nodeu.twiddle.tw = fftw_create_twiddle(n, config);
-     else
-	  p->nodeu.twiddle.tw = 0;
-     return p;
-}
-
-fftw_plan_node *fftw_make_node_hc2hc(int n, fftw_direction dir,
-				     const fftw_codelet_desc *config,
-				     fftw_plan_node *recurse,
-				     int flags)
-{
-     fftw_plan_node *p = fftw_make_node();
-
-     p->type = config->type;
-     p->nodeu.hc2hc.size = config->size;
-     p->nodeu.hc2hc.dir = dir;
-     p->nodeu.hc2hc.codelet = (fftw_hc2hc_codelet *) config->codelet;
-     p->nodeu.hc2hc.recurse = recurse;
-     p->nodeu.hc2hc.codelet_desc = config;
-     fftw_use_node(recurse);
-     if (flags & FFTW_MEASURE)
-	  p->nodeu.hc2hc.tw = fftw_create_twiddle(n, config);
-     else
-	  p->nodeu.hc2hc.tw = 0;
-     return p;
-}
-
-fftw_plan_node *fftw_make_node_generic(int n, int size,
-				       fftw_generic_codelet *codelet,
-				       fftw_plan_node *recurse,
-				       int flags)
-{
-     fftw_plan_node *p = fftw_make_node();
-
-     p->type = FFTW_GENERIC;
-     p->nodeu.generic.size = size;
-     p->nodeu.generic.codelet = codelet;
-     p->nodeu.generic.recurse = recurse;
-     fftw_use_node(recurse);
-
-     if (flags & FFTW_MEASURE)
-	  p->nodeu.generic.tw = fftw_create_twiddle(n,
-					  (const fftw_codelet_desc *) 0);
-     else
-	  p->nodeu.generic.tw = 0;
-     return p;
-}
-
-fftw_plan_node *fftw_make_node_rgeneric(int n, int size,
-					fftw_direction dir,
-					fftw_rgeneric_codelet *codelet,
-					fftw_plan_node *recurse,
-					int flags)
-{
-     fftw_plan_node *p = fftw_make_node();
-
-     if (size % 2 == 0 || (n / size) % 2 == 0)
-	  fftw_die("invalid size for rgeneric codelet\n");
-
-     p->type = FFTW_RGENERIC;
-     p->nodeu.rgeneric.size = size;
-     p->nodeu.rgeneric.dir = dir;
-     p->nodeu.rgeneric.codelet = codelet;
-     p->nodeu.rgeneric.recurse = recurse;
-     fftw_use_node(recurse);
-
-     if (flags & FFTW_MEASURE)
-	  p->nodeu.rgeneric.tw = fftw_create_twiddle(n,
-					  (const fftw_codelet_desc *) 0);
-     else
-	  p->nodeu.rgeneric.tw = 0;
-     return p;
-}
-
-/* 
- * Note that these two Rader-related things must go here, rather than
- * in rader.c, in order that putils.c (and rplanner.c) won't depend
- * upon rader.c. 
- */
-
-fftw_rader_data *fftw_rader_top = NULL;
-
-static void fftw_destroy_rader(fftw_rader_data * d)
-{
-     if (d) {
-	  d->refcount--;
-	  if (d->refcount <= 0) {
-	       fftw_rader_data *cur = fftw_rader_top, *prev = NULL;
-
-	       while (cur && cur != d) {
-		    prev = cur;
-		    cur = cur->next;
-	       }
-	       if (!cur)
-		    fftw_die("invalid Rader data pointer\n");
-
-	       if (prev)
-		    prev->next = d->next;
-	       else
-		    fftw_rader_top = d->next;
-
-	       fftw_destroy_plan_internal(d->plan);
-	       fftw_free(d->omega);
-	       fftw_free(d->cdesc);
-	       fftw_free(d);
-	  }
-     }
-}
-
-static void destroy_tree(fftw_plan_node *p)
-{
-     if (p) {
-	  --p->refcnt;
-	  if (p->refcnt == 0) {
-	       switch (p->type) {
-		   case FFTW_NOTW:
-		   case FFTW_REAL2HC:
-		   case FFTW_HC2REAL:
-			break;
-
-		   case FFTW_TWIDDLE:
-			if (p->nodeu.twiddle.tw)
-			     fftw_destroy_twiddle(p->nodeu.twiddle.tw);
-			destroy_tree(p->nodeu.twiddle.recurse);
-			break;
-
-		   case FFTW_HC2HC:
-			if (p->nodeu.hc2hc.tw)
-			     fftw_destroy_twiddle(p->nodeu.hc2hc.tw);
-			destroy_tree(p->nodeu.hc2hc.recurse);
-			break;
-
-		   case FFTW_GENERIC:
-			if (p->nodeu.generic.tw)
-			     fftw_destroy_twiddle(p->nodeu.generic.tw);
-			destroy_tree(p->nodeu.generic.recurse);
-			break;
-
-		   case FFTW_RADER:
-			if (p->nodeu.rader.tw)
-			     fftw_destroy_twiddle(p->nodeu.rader.tw);
-			if (p->nodeu.rader.rader_data)
-			     fftw_destroy_rader(p->nodeu.rader.rader_data);
-			destroy_tree(p->nodeu.rader.recurse);
-			break;
-
-		   case FFTW_RGENERIC:
-			if (p->nodeu.rgeneric.tw)
-			     fftw_destroy_twiddle(p->nodeu.rgeneric.tw);
-			destroy_tree(p->nodeu.rgeneric.recurse);
-			break;
-	       }
-
-	       fftw_free(p);
-	       fftw_node_cnt--;
-	  }
-     }
-}
-
-/* create a plan with twiddle factors, and other bells and whistles */
-fftw_plan fftw_make_plan(int n, fftw_direction dir,
-			 fftw_plan_node *root, int flags,
-			 enum fftw_node_type wisdom_type,
-			 int wisdom_signature,
-			 fftw_recurse_kind recurse_kind, int vector_size)
-{
-     fftw_plan p = (fftw_plan) fftw_malloc(sizeof(struct fftw_plan_struct));
-
-     p->n = n;
-     p->dir = dir;
-     p->flags = flags;
-     fftw_use_node(root);
-     p->root = root;
-     p->cost = 0.0;
-     p->wisdom_type = wisdom_type;
-     p->wisdom_signature = wisdom_signature;
-     p->recurse_kind = recurse_kind;
-     p->vector_size = vector_size;
-     if (recurse_kind == FFTW_VECTOR_RECURSE && vector_size > 1)
-	  fftw_die("invalid vector-recurse plan attempted\n");
-     p->next = (fftw_plan) 0;
-     p->refcnt = 0;
-     fftw_plan_cnt++;
-     return p;
-}
-
-/*
- * complete with twiddle factors (because nodes don't have
- * them when FFTW_ESTIMATE is set)
- */
-void fftw_complete_twiddle(fftw_plan_node *p, int n)
-{
-     int r;
-     switch (p->type) {
-	 case FFTW_NOTW:
-	 case FFTW_REAL2HC:
-	 case FFTW_HC2REAL:
-	      break;
-
-	 case FFTW_TWIDDLE:
-	      r = p->nodeu.twiddle.size;
-	      if (!p->nodeu.twiddle.tw)
-		   p->nodeu.twiddle.tw =
-		       fftw_create_twiddle(n, p->nodeu.twiddle.codelet_desc);
-	      fftw_complete_twiddle(p->nodeu.twiddle.recurse, n / r);
-	      break;
-
-	 case FFTW_HC2HC:
-	      r = p->nodeu.hc2hc.size;
-	      if (!p->nodeu.hc2hc.tw)
-		   p->nodeu.hc2hc.tw =
-		       fftw_create_twiddle(n, p->nodeu.hc2hc.codelet_desc);
-	      fftw_complete_twiddle(p->nodeu.hc2hc.recurse, n / r);
-	      break;
-
-	 case FFTW_GENERIC:
-	      r = p->nodeu.generic.size;
-	      if (!p->nodeu.generic.tw)
-		   p->nodeu.generic.tw =
-		       fftw_create_twiddle(n, (const fftw_codelet_desc *) 0);
-	      fftw_complete_twiddle(p->nodeu.generic.recurse, n / r);
-	      break;
-
-	 case FFTW_RADER:
-	      r = p->nodeu.rader.size;
-	      if (!p->nodeu.rader.tw)
-		   p->nodeu.rader.tw =
-		       fftw_create_twiddle(n, p->nodeu.rader.rader_data->cdesc);
-	      fftw_complete_twiddle(p->nodeu.rader.recurse, n / r);
-	      break;
-
-	 case FFTW_RGENERIC:
-	      r = p->nodeu.rgeneric.size;
-	      if (!p->nodeu.rgeneric.tw)
-		   p->nodeu.rgeneric.tw =
-		       fftw_create_twiddle(n, (const fftw_codelet_desc *) 0);
-	      fftw_complete_twiddle(p->nodeu.rgeneric.recurse, n / r);
-	      break;
-
-     }
-}
-
-void fftw_use_plan(fftw_plan p)
-{
-     ++p->refcnt;
-}
-
-void fftw_destroy_plan_internal(fftw_plan p)
-{
-     --p->refcnt;
-
-     if (p->refcnt == 0) {
-	  destroy_tree(p->root);
-	  fftw_plan_cnt--;
-	  fftw_free(p);
-     }
-}
-
-/* end of constructors */
-
-/* management of plan tables */
-void fftw_make_empty_table(fftw_plan *table)
-{
-     *table = (fftw_plan) 0;
-}
-
-void fftw_insert(fftw_plan *table, fftw_plan this_plan)
-{
-     fftw_use_plan(this_plan);
-     this_plan->next = *table;
-     *table = this_plan;
-}
-
-fftw_plan fftw_lookup(fftw_plan *table, int n, int flags, int vector_size)
-{
-     fftw_plan p;
-
-     for (p = *table; p &&
-	  (p->n != n || p->flags != flags || p->vector_size != vector_size); 
-          p = p->next);
-
-     return p;
-}
-
-void fftw_destroy_table(fftw_plan *table)
-{
-     fftw_plan p, q;
-
-     for (p = *table; p; p = q) {
-	  q = p->next;
-	  fftw_destroy_plan_internal(p);
-     }
-}
-
-double fftw_estimate_node(fftw_plan_node *p)
-{
-     int k;
-
-     switch (p->type) {
-	 case FFTW_NOTW:
-	      k = p->nodeu.notw.size;
-	      goto common1;
-
-	 case FFTW_REAL2HC:
-	      k = p->nodeu.real2hc.size;
-	      goto common1;
-
-	 case FFTW_HC2REAL:
-	      k = p->nodeu.hc2real.size;
-	    common1:
-	      return 1.0 + 0.1 * (k - NOTW_OPTIMAL_SIZE) *
-		  (k - NOTW_OPTIMAL_SIZE);
-
-	 case FFTW_TWIDDLE:
-	      k = p->nodeu.twiddle.size;
-	      return 1.0 + 0.1 * (k - TWIDDLE_OPTIMAL_SIZE) *
-		  (k - TWIDDLE_OPTIMAL_SIZE)
-		  + fftw_estimate_node(p->nodeu.twiddle.recurse);
-
-	 case FFTW_HC2HC:
-	      k = p->nodeu.hc2hc.size;
-	      return 1.0 + 0.1 * (k - TWIDDLE_OPTIMAL_SIZE) *
-		  (k - TWIDDLE_OPTIMAL_SIZE)
-		  + fftw_estimate_node(p->nodeu.hc2hc.recurse);
-
-	 case FFTW_GENERIC:
-	      k = p->nodeu.generic.size;
-	      return 10.0 + k * k
-		  + fftw_estimate_node(p->nodeu.generic.recurse);
-
-	 case FFTW_RADER:
-	      k = p->nodeu.rader.size;
-	      return 10.0 + 10 * k
-		  + fftw_estimate_node(p->nodeu.rader.recurse);
-
-	 case FFTW_RGENERIC:
-	      k = p->nodeu.rgeneric.size;
-	      return 10.0 + k * k
-		  + fftw_estimate_node(p->nodeu.rgeneric.recurse);
-     }
-     return 1.0E20;
-}
-
-/* pick the better of two plans and destroy the other one. */
-fftw_plan fftw_pick_better(fftw_plan p1, fftw_plan p2)
-{
-     if (!p1)
-	  return p2;
-
-     if (!p2)
-	  return p1;
-
-     if (p1->cost > p2->cost) {
-	  fftw_destroy_plan_internal(p1);
-	  return p2;
-     } else {
-	  fftw_destroy_plan_internal(p2);
-	  return p1;
-     }
-}
-
-/* find the smallest prime factor of n */
-int fftw_factor(int n)
-{
-     int r;
-
-     /* try 2 */
-     if ((n & 1) == 0)
-	  return 2;
-
-     /* try odd numbers up to sqrt(n) */
-     for (r = 3; r * r <= n; r += 2)
-	  if (n % r == 0)
-	       return r;
-
-     /* n is prime */
-     return n;
-}
-
-static void print_node(FILE *f, fftw_plan_node *p, int indent)
-{
-     if (p) {
-	  switch (p->type) {
-	      case FFTW_NOTW:
-		   fprintf(f, "%*sFFTW_NOTW %d\n", indent, "",
-			   p->nodeu.notw.size);
-		   break;
-	      case FFTW_REAL2HC:
-		   fprintf(f, "%*sFFTW_REAL2HC %d\n", indent, "",
-			   p->nodeu.real2hc.size);
-		   break;
-	      case FFTW_HC2REAL:
-		   fprintf(f, "%*sFFTW_HC2REAL %d\n", indent, "",
-			   p->nodeu.hc2real.size);
-		   break;
-	      case FFTW_TWIDDLE:
-		   fprintf(f, "%*sFFTW_TWIDDLE %d\n", indent, "",
-			   p->nodeu.twiddle.size);
-		   print_node(f, p->nodeu.twiddle.recurse, indent);
-		   break;
-	      case FFTW_HC2HC:
-		   fprintf(f, "%*sFFTW_HC2HC %d\n", indent, "",
-			   p->nodeu.hc2hc.size);
-		   print_node(f, p->nodeu.hc2hc.recurse, indent);
-		   break;
-	      case FFTW_GENERIC:
-		   fprintf(f, "%*sFFTW_GENERIC %d\n", indent, "",
-			   p->nodeu.generic.size);
-		   print_node(f, p->nodeu.generic.recurse, indent);
-		   break;
-	      case FFTW_RADER:
-		   fprintf(f, "%*sFFTW_RADER %d\n", indent, "",
-			   p->nodeu.rader.size);
-
-		   fprintf(f, "%*splan for size %d convolution:\n",
-			   indent + 4, "", p->nodeu.rader.size - 1);
-		   print_node(f, p->nodeu.rader.rader_data->plan->root,
-			      indent + 6);
-
-		   print_node(f, p->nodeu.rader.recurse, indent);
-		   break;
-	      case FFTW_RGENERIC:
-		   fprintf(f, "%*sFFTW_RGENERIC %d\n", indent, "",
-			   p->nodeu.rgeneric.size);
-		   print_node(f, p->nodeu.rgeneric.recurse, indent);
-		   break;
-	  }
-     }
-}
-
-void fftw_fprint_plan(FILE *f, fftw_plan p)
-{
-
-     fprintf(f, "plan: (cost = %e)\n", p->cost);
-     if (p->recurse_kind == FFTW_VECTOR_RECURSE)
-	  fprintf(f, "(vector recursion)\n");
-     else if (p->vector_size > 1)
-	  fprintf(f, "(vector-size %d)\n", p->vector_size);
-     print_node(f, p->root, 0);
-}
-
-void fftw_print_plan(fftw_plan p)
-{
-     fftw_fprint_plan(stdout, p);
-}
-
-size_t fftw_sizeof_fftw_real(void)
-{
-     return(sizeof(fftw_real));
-}
-- 
cgit v1.2.3