I found ta_HT_DCPERIOD.c and ta_HT_DCPHASE.c, etc.
I see a couple problems

1.
In ta_HT_DCPHASE, on line 427 is
else if( tempReal <= 0.01 )
should be
else if( tempReal <= 0.001 )
ref Ehlers p. 122

2.
In several places, a comment says "idx" is used to iterate for up to 50 of the last value of smoothPrice. By code inspection, that's not true. What it actually does is rotate through last 50 values, starting over at end of the smoothPrice array each time 0 is reached. Anyway, that's not in the book.
Code:
/* idx is used to iterate for up to 50 of the last
       * value of smoothPrice.
       */
      idx = smoothPrice_Idx;
      for( i=0; i < DCPeriodInt; i++ )
      {
         tempReal  = ((double)i*constDeg2RadBy360)/(double)DCPeriodInt;
         tempReal2 = smoothPrice[idx];
         realPart += std_sin(tempReal)*tempReal2;
         imagPart += std_cos(tempReal)*tempReal2;
         if( idx == 0 )
            idx = SMOOTH_PRICE_SIZE-1;
         else
            idx--;
      }


Since that code smells funny, I look a little closer. whats this... RealPart should accumulate cos(x / period), and the ImagPart should accumulate sin(x / period). I think the coder got sin & cos confused. ref Ehlers p. 122

That fragment is untouched since the first check-in http://sourceforge.net/p/ta-lib/code/139/

I realize that this is not your code. But I thought you might be interested anyway. so you don't blame ehlers algos for what may actually be an implementation issue (or three).